RE: [SQL] A path through a tree

From: "Jackson, DeJuan" <djackson(at)cpsgroup(dot)com>
To: Neil Burrows <neil(at)remo(dot)demon(dot)co(dot)uk>
Cc: PGSQL SQL <pgsql-sql(at)postgresql(dot)org>
Subject: RE: [SQL] A path through a tree
Date: 1999-01-14 16:18:48
Message-ID: F10BB1FAF801D111829B0060971D839F5DE763@cpsmail
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

> > If you want to use this for a message board I'd suggest inserting a
> > dummy head that gets excluded from display in your app. instead of
> > trying to have multiple heads.
> >
> > Let me know if you figure out an easy way to display
> treading, haven't
> > tried it myself.
>
> Eek! Caught! :)
>
> Thanks again,
>
> Regards,
>
> Neil Burrows

Well, last night I thought it over and a Good(tm) way to display
threading, hit me. If you don't ever delete a node, but just it's data
you can use the l and r information recursively to display.

function display(nodeList[][], currentNode, depth) {
printf("%s|_%s\n", spaces(depth*2), nodeList[currentNode]['title']);
numChildren = (nodeList[currentNode]['r'] -
nodeList[currentNode]['l'] - 1)/2;
for(numNodes=0;numNodes < numChildren;
numNodes += display(nodeList, currentNode+numNodes+1, depth+1)) ;
numNodes++;
return numNodes;
}

I hope my psudo-code is decipherable.
Looking at the tree from the previous message:
l| r|data
--+--+----
1|12|head
2| 7|c1
3| 4|c11
5| 6|c12
8| 9|c2
10|11|c3
(6 rows)

And using the information in the above function we get:
|_head
|_c1
|_c11
|_c12
|_c2
|_c3

Collapsing and expanding branches could simply be an array of booleans
that's checked at currentNode where true display current node with a
plus (link for html to expand) then return numChildren+1 otherwise do
the loop.

Just thought everybody might like to see this.
-DEJ
BTW if you want more examples of this data-layout of trees I can send in
the URL's where I found it.

Browse pgsql-sql by date

  From Date Subject
Next Message Morris, Sam@EDD 1999-01-14 19:04:16 many to many relationship Query ?
Previous Message Frank Barknecht 1999-01-14 15:28:48 Re: [SQL] Text type