Skip to content

Instantly share code, notes, and snippets.

@weeble
Created March 24, 2014 20:55
Show Gist options
  • Save weeble/9748980 to your computer and use it in GitHub Desktop.
Save weeble/9748980 to your computer and use it in GitHub Desktop.
from collections import namedtuple
def flatten(xs):
return sum(xs, [])
Node = namedtuple('Node', 'value children')
def leaf(name):
return Node(name, [])
tree1 = Node('e', [leaf('a'), leaf('b')])
tree2 = Node('f', [leaf('c'), leaf('d')])
tree3 = Node('i', [tree1, tree2])
tree4 = Node('j', [leaf('g'), leaf('h')])
tree = Node('k', [tree3, tree4])
def tree_walk_depth(tree):
return [tree.value] + flatten(map(tree_walk_depth, tree.children))
def tree_walk_depend(tree):
return flatten(map(tree_walk_depend, tree.children)) + [tree.value]
print(tree_walk_depth(tree))
print(tree_walk_depend(tree))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment