unbalanced tree iteration issue
kost BebiX
k.bx at ya.ru
Fri Jan 14 08:33:34 EST 2011
More information about the Python-list mailing list
Fri Jan 14 08:33:34 EST 2011
- Previous message (by thread): unbalanced tree iteration issue
- Next message (by thread): unbalanced tree iteration issue
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
14.01.2011, 14:17, "Alex Boyko" <alex.kyrish at gmail.com>: > Dear All! > > I have deal with large unbalanced trees and I have to implement post-order tree traversal. My first attempt is shown below ("Node" and "Tree" classes) and based on recursive generators approach. > > class Node(): > def __init__(self,value): > self.childs = [] > self.value = value > > class Tree(): > > def __init__(self, root): > self.root = root > self.numberCells = 1 > > def add(self, node, child): > node.childs.append(child) > self.numberCells+=1 > > def __iter__(self): > return self.postorder(self.root) > > def postorder(self, node): > if node: > for child in node.childs: > for n in self.postorder(child): > yield n > yield node > > It works fine for small test trees. But, my tree has approximately 300000 nodes, and shown post order traversal with generators takes 80 sec against 1 sec with simple recursive routine: > > def recursiveFromTop(node): > for child in node.childs: > recursiveFromTop(child) > ## here I can do some computations with current node's data > > So, I'd like to know how should I implement (if it's possible of course) __iter__ for my tree class based on recursion without generators? Please, can You show me the ways? > because I'm very passionate in idea iterate through my tree with simple: > > for node in tree: > do something with node > > Thanks in Advance! > Best Regards! > Alex > > -- > http://mail.python.org/mailman/listinfo/python-list God damn pypy is fast)) $ ~/bin/pypy-1.4.1-linux64/bin/pypy ./postorder.py building tree...done 0:00:03.000854 doing generator post_order...done 0:00:00.000069 doing non-generator post_order...done 0:00:00.240168 -- jabber: k.bx at ya.ru
- Previous message (by thread): unbalanced tree iteration issue
- Next message (by thread): unbalanced tree iteration issue
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list