Thread: RE: [SQL] A path through a tree

RE: [SQL] A path through a tree

From
"Jackson, DeJuan"
Date:
Oh well only one request for the URLS.  But, hey that's enough of an
excuse for me, so here you go:

http://www.dbmsmag.com/9603d06.html

http://www.dbmsmag.com/9604d06.html

http://www.dbmsmag.com/9605d06.html



> Hi.
>
> Saw your message in the pgsql list.  I would be interested in
> teh URL you
> mentioned where you found this information if you wouldnt
> mind.  I have
> dones eomething similar toi this, but my solution is not as
> robust as this
> one.  I basically just stored the node titles in one table, and made
> another table that tells which nodes are parents/children of
> other nodes.
> Works pretty well for what I need since I only need to show
> one "level" of
> the tree most of 'the time.  There are some times I need to
> walk up the
> tree to get the path to the root, but my trees are very
> shallow, so this
> only takes 3-4 selects :).  But I really like this solution
> and would liek
> to see the url where you round it.
>
> Thanks!
>
> Mike
> >
> > 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.
> >
>