<pre><code>class Tree:
def __init__(self, value, children = None):
self.value = value
self.children = []
if children:
self.children = list(children)
def get_children(self):
return list(self.children)
def get_value(self):
return self.value
def has_children(self):
if self.children:
return True
node9 = Tree(9)
node5 = Tree(5, [node9])
node6 = Tree(6)
node3 = Tree(3, [node5, node6])
node7 = Tree(7)
node8 = Tree(8)
node4 = Tree(4, [node7, node8])
node2 = Tree(2)
node1 = Tree(1, [node2, node4, node3])
def iterate_child(child):
global level
print ' ' * level * 2, child.get_value()
if child.has_children():
level += 1
for s_child in child.get_children():
iterate_child(s_child)
level -= 1
level = 1
print node1.get_value()
for child in node1.get_children():
iterate_child(child)
</code></pre>
<p><a href="https://i.stack.imgur.com/Jnt9N.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Jnt9N.png" alt="Printing in Depth First Order"/></a></p>
<p>如上图所示,我迭代了node1的子节点,并递归地迭代了子节点的子节点,然后处理了父节点的第二个子节点。在</p>