-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathlist_of_depths.py
41 lines (39 loc) · 1.16 KB
/
list_of_depths.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from collections import deque
class TreeNode:
def __init__(self, data):
self.data = data
self.left = self.right = None
#for deque use (append && popleft) or (appendleft && pop)
#naive approach to illustrate Linked Lists on each level
def levelOrder(Node):
if Node is None:
return
queue, linkedlist = deque(), deque()
queue.append(Node)
queue.append(None)
level = 1
while queue:
x = queue.popleft()
if x == None:
if queue:
queue.append(None)
while len(linkedlist) != 0:
if len(linkedlist) == 1:
print(linkedlist.popleft().data)
else:
print(linkedlist.popleft().data, end = '->')
else:
linkedlist.append(x)
if x.left is not None:
queue.append(x.left)
if x.right is not None:
queue.append(x.right)
if __name__ == "__main__":
r = TreeNode(1)
r.left = TreeNode(2)
r.right = TreeNode(3)
r.left.left = TreeNode(4)
r.left.right = TreeNode(5)
r.right.left = TreeNode(6)
r.right.right = TreeNode(7)
levelOrder(r)