Skip to content

Commit 24207be

Browse files
committed
Postorder and Preorder traversal
1 parent 0291b89 commit 24207be

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

binary_tree.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,30 @@ def inorder(tree):
5353
return inorder(left_child(tree)) + [node_value(tree)] + inorder(right_child(tree))
5454

5555

56+
def inorder_traverse(tree, visit_func):
57+
if tree == [] or node_value(tree) == None:
58+
return
59+
inorder_traverse(left_child(tree), visit_func)
60+
visit_func(node_value(tree))
61+
inorder_traverse(right_child(tree), visit_func)
62+
63+
64+
def postorder_traverse(tree, visit_func):
65+
if tree == [] or node_value(tree) == None:
66+
return
67+
postorder_traverse(left_child(tree), visit_func)
68+
postorder_traverse(right_child(tree), visit_func)
69+
visit_func(node_value(tree))
70+
71+
72+
def preorder_traverse(tree, visit_func):
73+
if tree == [] or node_value(tree) == None:
74+
return
75+
visit_func(node_value(tree))
76+
preorder_traverse(left_child(tree), visit_func)
77+
preorder_traverse(right_child(tree), visit_func)
78+
79+
5680
def print_tree(tree, indent=0):
5781
if tree == [] or node_value(tree) == None:
5882
return
@@ -70,4 +94,11 @@ def print_tree(tree, indent=0):
7094
print("Is 20 in tree?", contains(tree, 20))
7195
print("Is 100 in tree?", contains(tree, 100))
7296
print("Inorder:", inorder(tree))
97+
print("Inorder traversal: ", end="")
98+
inorder_traverse(tree, lambda node: print(node, end=", "))
99+
print("\nPostorder traversal: ", end="")
100+
postorder_traverse(tree, lambda node: print(node, end=", "))
101+
print("\nPreorder traversal: ", end="")
102+
preorder_traverse(tree, lambda node: print(node, end=", "))
103+
print()
73104

0 commit comments

Comments
 (0)