[Python-ideas] Revised^4 PEP on yield-from
Antoine Pitrou
solipsis at pitrou.net
Thu Feb 19 23:54:02 CET 2009
Greg Ewing <greg.ewing at ...> writes:
>
> > It should be relatively easy to avoid O(n**2) behaviour when traversing
> > a tree,
>
> How?
By doing the traversal iteratively rather than recursively. Well, I admit
the following function took a couple of attempts to get right:
def traverse_depth_first(tree):
stack = []
yield tree.value
it = iter(tree.children)
while True:
try:
child = it.next()
except StopIteration:
if not stack:
raise
it, tree = stack.pop()
else:
stack.append((it, tree))
tree = child
yield tree.value
it = iter(tree.children)
More information about the Python-ideas
mailing list