Skip to content

Commit f21f2aa

Browse files
author
wb.xubilin
committed
二叉树 后序遍历
1 parent c0d0a3c commit f21f2aa

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

new_issue/data_sturct/binary_tree/inorderTraverse.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def inorder_traverse(node,op_func):
1010
inorder_traverse(node.right_child,op_func)
1111

1212

13-
def inorder_traverse_nonResursion(node,op_func):
13+
def inorder_traverse_nonRecursion(node,op_func):
1414
stack = []
1515
root = node
1616
while len(stack) != 0 or root != None:
@@ -27,4 +27,4 @@ def inorder_traverse_nonResursion(node,op_func):
2727
root_node = init_tree_from_list(test_list)
2828
def visit(node):
2929
print node.value
30-
inorder_traverse_nonResursion(root_node,visit)
30+
inorder_traverse_nonRecursion(root_node,visit)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from initTree import init_tree_from_list
2+
def postorder_traverse(node,op_func):
3+
if node.left_child != None:
4+
postorder_traverse(node.left_child,op_func)
5+
6+
if node.right_child != None:
7+
postorder_traverse(node.right_child,op_func)
8+
9+
op_func(node)
10+
11+
def postorder_traverse_nonRecursion(node,op_func):
12+
stack = [node]
13+
root = node
14+
last_node = None
15+
16+
while len(stack) != 0 or root != None:
17+
while root != None:
18+
stack.append(root)
19+
root = root.left_child
20+
op_node = stack[-1]
21+
if op_node.right_child == None or op_node.right_child == last_node:
22+
op_node = stack.pop()
23+
op_func(op_node)
24+
last_node = op_node
25+
else:
26+
root = op_node.right_child
27+
28+
if __name__ == "__main__":
29+
test_list = range(10)
30+
root_node = init_tree_from_list(test_list)
31+
def visit(node):
32+
print node.value
33+
postorder_traverse_nonRecursion(root_node,visit)

0 commit comments

Comments
 (0)