Как насчет этого,
#!/usr/bin/python
tree = { 0:(None, [1,2,3]),
1:(0, [4]),
2:(0, []),
3:(0, [5,6]),
4:(1, [7]),
5:(3, []),
6:(3, []),
7:(4, []),
}
def find_children( tree, id ):
print "node:", id, tree[id]
for child in tree[id][1]:
find_children( tree, child )
if __name__=="__main__":
import sys
find_children( tree, int(sys.argv[1]) )
$ ./tree.py 3
node: 3 (0, [5, 6])
node: 5 (3, [])
node: 6 (3, [])
Стоит также отметить, что python имеет довольно низкий предел рекурсии по умолчанию, я думаю, 1000.
В случае, если ваше дерево на самом деле становится довольно глубоким, вы попадете в это очень быстро.
Вы можете проверить это,
sys.setrecursionlimit(100000)
и проверьте это,
sys.getrecursionlimit()