@@ -39,6 +39,20 @@ def build_tree():
39
39
40
40
41
41
def pre_order (node : TreeNode ) -> None :
42
+ """
43
+ >>> root = TreeNode(1)
44
+ >>> tree_node2 = TreeNode(2)
45
+ >>> tree_node3 = TreeNode(3)
46
+ >>> tree_node4 = TreeNode(4)
47
+ >>> tree_node5 = TreeNode(5)
48
+ >>> tree_node6 = TreeNode(6)
49
+ >>> tree_node7 = TreeNode(7)
50
+ >>> root.left, root.right = tree_node2, tree_node3
51
+ >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5
52
+ >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7
53
+ >>> pre_order(root)
54
+ 1 2 4 5 3 6 7
55
+ """
42
56
if not isinstance (node , TreeNode ) or not node :
43
57
return
44
58
print (node .data , end = " " )
@@ -47,6 +61,20 @@ def pre_order(node: TreeNode) -> None:
47
61
48
62
49
63
def in_order (node : TreeNode ) -> None :
64
+ """
65
+ >>> root = TreeNode(1)
66
+ >>> tree_node2 = TreeNode(2)
67
+ >>> tree_node3 = TreeNode(3)
68
+ >>> tree_node4 = TreeNode(4)
69
+ >>> tree_node5 = TreeNode(5)
70
+ >>> tree_node6 = TreeNode(6)
71
+ >>> tree_node7 = TreeNode(7)
72
+ >>> root.left, root.right = tree_node2, tree_node3
73
+ >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5
74
+ >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7
75
+ >>> in_order(root)
76
+ 4 2 5 1 6 3 7
77
+ """
50
78
if not isinstance (node , TreeNode ) or not node :
51
79
return
52
80
in_order (node .left )
@@ -55,6 +83,20 @@ def in_order(node: TreeNode) -> None:
55
83
56
84
57
85
def post_order (node : TreeNode ) -> None :
86
+ """
87
+ >>> root = TreeNode(1)
88
+ >>> tree_node2 = TreeNode(2)
89
+ >>> tree_node3 = TreeNode(3)
90
+ >>> tree_node4 = TreeNode(4)
91
+ >>> tree_node5 = TreeNode(5)
92
+ >>> tree_node6 = TreeNode(6)
93
+ >>> tree_node7 = TreeNode(7)
94
+ >>> root.left, root.right = tree_node2, tree_node3
95
+ >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5
96
+ >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7
97
+ >>> post_order(root)
98
+ 4 5 2 6 7 3 1
99
+ """
58
100
if not isinstance (node , TreeNode ) or not node :
59
101
return
60
102
post_order (node .left )
@@ -63,6 +105,20 @@ def post_order(node: TreeNode) -> None:
63
105
64
106
65
107
def level_order (node : TreeNode ) -> None :
108
+ """
109
+ >>> root = TreeNode(1)
110
+ >>> tree_node2 = TreeNode(2)
111
+ >>> tree_node3 = TreeNode(3)
112
+ >>> tree_node4 = TreeNode(4)
113
+ >>> tree_node5 = TreeNode(5)
114
+ >>> tree_node6 = TreeNode(6)
115
+ >>> tree_node7 = TreeNode(7)
116
+ >>> root.left, root.right = tree_node2, tree_node3
117
+ >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5
118
+ >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7
119
+ >>> level_order(root)
120
+ 1 2 3 4 5 6 7
121
+ """
66
122
if not isinstance (node , TreeNode ) or not node :
67
123
return
68
124
q : queue .Queue = queue .Queue ()
@@ -77,6 +133,22 @@ def level_order(node: TreeNode) -> None:
77
133
78
134
79
135
def level_order_actual (node : TreeNode ) -> None :
136
+ """
137
+ >>> root = TreeNode(1)
138
+ >>> tree_node2 = TreeNode(2)
139
+ >>> tree_node3 = TreeNode(3)
140
+ >>> tree_node4 = TreeNode(4)
141
+ >>> tree_node5 = TreeNode(5)
142
+ >>> tree_node6 = TreeNode(6)
143
+ >>> tree_node7 = TreeNode(7)
144
+ >>> root.left, root.right = tree_node2, tree_node3
145
+ >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5
146
+ >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7
147
+ >>> level_order_actual(root)
148
+ 1
149
+ 2 3
150
+ 4 5 6 7
151
+ """
80
152
if not isinstance (node , TreeNode ) or not node :
81
153
return
82
154
q : queue .Queue = queue .Queue ()
@@ -97,6 +169,20 @@ def level_order_actual(node: TreeNode) -> None:
97
169
98
170
# iteration version
99
171
def pre_order_iter (node : TreeNode ) -> None :
172
+ """
173
+ >>> root = TreeNode(1)
174
+ >>> tree_node2 = TreeNode(2)
175
+ >>> tree_node3 = TreeNode(3)
176
+ >>> tree_node4 = TreeNode(4)
177
+ >>> tree_node5 = TreeNode(5)
178
+ >>> tree_node6 = TreeNode(6)
179
+ >>> tree_node7 = TreeNode(7)
180
+ >>> root.left, root.right = tree_node2, tree_node3
181
+ >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5
182
+ >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7
183
+ >>> pre_order_iter(root)
184
+ 1 2 4 5 3 6 7
185
+ """
100
186
if not isinstance (node , TreeNode ) or not node :
101
187
return
102
188
stack : List [TreeNode ] = []
@@ -113,6 +199,20 @@ def pre_order_iter(node: TreeNode) -> None:
113
199
114
200
115
201
def in_order_iter (node : TreeNode ) -> None :
202
+ """
203
+ >>> root = TreeNode(1)
204
+ >>> tree_node2 = TreeNode(2)
205
+ >>> tree_node3 = TreeNode(3)
206
+ >>> tree_node4 = TreeNode(4)
207
+ >>> tree_node5 = TreeNode(5)
208
+ >>> tree_node6 = TreeNode(6)
209
+ >>> tree_node7 = TreeNode(7)
210
+ >>> root.left, root.right = tree_node2, tree_node3
211
+ >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5
212
+ >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7
213
+ >>> in_order_iter(root)
214
+ 4 2 5 1 6 3 7
215
+ """
116
216
if not isinstance (node , TreeNode ) or not node :
117
217
return
118
218
stack : List [TreeNode ] = []
@@ -127,6 +227,20 @@ def in_order_iter(node: TreeNode) -> None:
127
227
128
228
129
229
def post_order_iter (node : TreeNode ) -> None :
230
+ """
231
+ >>> root = TreeNode(1)
232
+ >>> tree_node2 = TreeNode(2)
233
+ >>> tree_node3 = TreeNode(3)
234
+ >>> tree_node4 = TreeNode(4)
235
+ >>> tree_node5 = TreeNode(5)
236
+ >>> tree_node6 = TreeNode(6)
237
+ >>> tree_node7 = TreeNode(7)
238
+ >>> root.left, root.right = tree_node2, tree_node3
239
+ >>> tree_node2.left, tree_node2.right = tree_node4 , tree_node5
240
+ >>> tree_node3.left, tree_node3.right = tree_node6 , tree_node7
241
+ >>> post_order_iter(root)
242
+ 4 5 2 6 7 3 1
243
+ """
130
244
if not isinstance (node , TreeNode ) or not node :
131
245
return
132
246
stack1 , stack2 = [], []
@@ -151,6 +265,8 @@ def prompt(s: str = "", width=50, char="*") -> str:
151
265
152
266
153
267
if __name__ == "__main__" :
268
+ import doctest
269
+ doctest .testmod ()
154
270
print (prompt ("Binary Tree Traversals" ))
155
271
156
272
node = build_tree ()
0 commit comments