@@ -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+
5680def 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 ("\n Postorder traversal: " , end = "" )
100+ postorder_traverse (tree , lambda node : print (node , end = ", " ))
101+ print ("\n Preorder traversal: " , end = "" )
102+ preorder_traverse (tree , lambda node : print (node , end = ", " ))
103+ print ()
73104
0 commit comments