RE: [SQL] A path through a tree

From: "Jackson, DeJuan" <djackson(at)cpsgroup(dot)com>
To: Michael J Schout <mschout(at)mail(dot)gkg-com(dot)com>, PGSQL SQL <pgsql-sql(at)postgresql(dot)org>
Subject: RE: [SQL] A path through a tree
Date: 1999-01-20 16:20:42
Message-ID: F10BB1FAF801D111829B0060971D839F5F80C4@cpsmail
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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.
> >
>

Browse pgsql-sql by date

  From Date Subject
Next Message Michael Olivier 1999-01-20 19:05:42 RE: [SQL] binary operators / C func getting "invalid ELF header"
Previous Message Jackson, DeJuan 1999-01-20 16:17:21 RE: [SQL] Faster LIKE