[Tutor] treeTraversal, nested return?
jjcrump at uw.edu
jjcrump at uw.edu
Fri Jun 4 19:15:26 CEST 2010
All,
any observations might be helpful. For the display of database contents I
have the following problem:
Database querys will return data to me in tuples of the following sort:
each tuple has a unique id, a parent id, and a type.
a parent id of 0 indicates that the element has no parent.
not all data elements have children
image elements have no children and must have a parent
So the contents of the db is a tree of sorts:
(1, 0, work)
(555, 1, image)
(556, 1, work)
(557, 556, image)
(558, 556, work)
(559, 558, image)
(560, 558, work)
(561, 556, image)
(562, 556, image)
(563, 1, work)
(564, 563, work)
(565, 1, work)
I have a function that will traverse this tree, summoning lists of tuples
at each leaf. Well and good; it took a lot of trial and error, but it was
a fine education in tree traversal.
def makeHeirarchy(id):
id = parentPath(id)[-1]
rootimages = getImages(id[0])
rootworks = getWorks(id[0])
heirarchy = treeTraversal(rootworks, [id, rootimages])
return heirarchy
## which calls this recursive function:
def treeTraversal(listIn,result):
for x in listIn:
if not getWorks(x[0]):
result.append(x)
result.append(getImages(x[0]))
else:
result.append(x)
result.append(getImages(x[0]))
treeTraversal(getWorks(x[0]), result)
return result
My problem is that this returns the tuples to me in a flat list.
I've been trying to work out how I can get it to return some sort of
nested structure: nested lists, dictionaries, or html thus:
<ul>
<li>1,0,data</li>
<ul>
<li>555, 1, image</li>
<li>556, 1, data<li>
<ul>
<li>557, 556, image</li>
<li>561, 556, image</li>
<li>562, 556, image</li>
<li>558, 556, data</li>
<ul>
<li>559, 558, image</li>
<li>560, 558, image</li>
</ul>
</ul>
<li>563, 1, data</li>
<ul>
<li>564, 563, data</li>
</ul>
<li>565, 1, data</li>
</ul>
</ul>
More information about the Tutor
mailing list