Skip to content

Commit e694e59

Browse files
naklechacclauss
authored andcommitted
Added a few doctests for traversals (#1149)
1 parent 47cb394 commit e694e59

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

Diff for: traversals/binary_tree_traversals.py

+116
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,20 @@ def build_tree():
3939

4040

4141
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+
"""
4256
if not isinstance(node, TreeNode) or not node:
4357
return
4458
print(node.data, end=" ")
@@ -47,6 +61,20 @@ def pre_order(node: TreeNode) -> None:
4761

4862

4963
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+
"""
5078
if not isinstance(node, TreeNode) or not node:
5179
return
5280
in_order(node.left)
@@ -55,6 +83,20 @@ def in_order(node: TreeNode) -> None:
5583

5684

5785
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+
"""
58100
if not isinstance(node, TreeNode) or not node:
59101
return
60102
post_order(node.left)
@@ -63,6 +105,20 @@ def post_order(node: TreeNode) -> None:
63105

64106

65107
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+
"""
66122
if not isinstance(node, TreeNode) or not node:
67123
return
68124
q: queue.Queue = queue.Queue()
@@ -77,6 +133,22 @@ def level_order(node: TreeNode) -> None:
77133

78134

79135
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+
"""
80152
if not isinstance(node, TreeNode) or not node:
81153
return
82154
q: queue.Queue = queue.Queue()
@@ -97,6 +169,20 @@ def level_order_actual(node: TreeNode) -> None:
97169

98170
# iteration version
99171
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+
"""
100186
if not isinstance(node, TreeNode) or not node:
101187
return
102188
stack: List[TreeNode] = []
@@ -113,6 +199,20 @@ def pre_order_iter(node: TreeNode) -> None:
113199

114200

115201
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+
"""
116216
if not isinstance(node, TreeNode) or not node:
117217
return
118218
stack: List[TreeNode] = []
@@ -127,6 +227,20 @@ def in_order_iter(node: TreeNode) -> None:
127227

128228

129229
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+
"""
130244
if not isinstance(node, TreeNode) or not node:
131245
return
132246
stack1, stack2 = [], []
@@ -151,6 +265,8 @@ def prompt(s: str = "", width=50, char="*") -> str:
151265

152266

153267
if __name__ == "__main__":
268+
import doctest
269+
doctest.testmod()
154270
print(prompt("Binary Tree Traversals"))
155271

156272
node = build_tree()

0 commit comments

Comments
 (0)