Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1720188

Browse files
committed
day3:level order tree traversals
1 parent d6665e1 commit 1720188

File tree

3 files changed

+147
-5
lines changed

3 files changed

+147
-5
lines changed

‎README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
| Current Status| Stats |
88
| :------------: | :----------: |
99
| Total C++ Problems | 188 |
10-
| Total Python Problems | 6 |
11-
| Current Daily Streak| 2 |
10+
| Total Python Problems | 8 |
11+
| Current Daily Streak| 3 |
1212
| Last Streak | 06/20/2019 - 06/21/2019|
13-
| Current Streak | 06/23/2019 - 06/24/2019|
13+
| Current Streak | 06/23/2019 - 06/25/2019|
1414

1515
</center>
1616

@@ -115,8 +115,8 @@ Include contains single header implementation of data structures and some algori
115115
### Tree Problems
116116
| Problem | Solution |
117117
| :------------ | :----------: |
118-
|Iterative Level order traversal of Tree using queue |[levelOrderTraversalIterative.cpp](tree_problems/levelOrderTraversalIterative.cpp)|
119-
|Recursive Level order traveral of Tree | [levelOrderTraversalRecursive.cpp](tree_problems/levelOrderTraversalRecursive.cpp)|
118+
|Iterative Level order traversal of Tree using queue |[levelOrderTraversalIterative.cpp](tree_problems/levelOrderTraversalIterative.cpp), [level_order_tree_traversal_iterative.py](tree_problems/level_order_tree_traversal_iterative.py)|
119+
|Recursive Level order traveral of Tree | [levelOrderTraversalRecursive.cpp](tree_problems/levelOrderTraversalRecursive.cpp), [level_order_tree_traversal_recursive.py](tree_problems/level_order_tree_traversal_recursive.py)|
120120
|ZigZag Traversal of Tree | [zigZagTraversal.cpp](tree_problems/zigZagTraversal.cpp)|
121121
|Predecessor and Successor of a given node in Binary Search Tree | [predecessorSuccessor.cpp](tree_problems/predecessorSuccessor.cpp)|
122122
|Given values of two nodes in a Binary Search Tree, find the Lowest Common Ancestor (LCA). Assume that both the values exist in the tree.| [lowest-common-ancestor.cpp](tree_problems/lowest-common-ancestor.cpp)|
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Program to implement level order traversal - recursive version
2+
3+
class TreeNode:
4+
"""Representation of a binary tree node"""
5+
def __init__(self, data):
6+
self.data = data
7+
self.left = None
8+
self.right = None
9+
10+
class Tree:
11+
"""Representation of a binary tree"""
12+
def __init__(self):
13+
self.root = None
14+
15+
def in_order(self):
16+
"""In order traversal of the tree"""
17+
current = self.root
18+
stack = []
19+
done = False
20+
while not done:
21+
if current is not None:
22+
stack.append(current)
23+
current = current.left
24+
25+
elif stack:
26+
current = stack.pop()
27+
print(current.data, end=' ')
28+
current = current.right
29+
else:
30+
done = True
31+
print()
32+
33+
def level_order(self):
34+
"""Prints level order tree traversal iterative way"""
35+
#an empty queue
36+
queue = []
37+
queue.append(self.root)
38+
while queue:
39+
curr = queue.pop(0)
40+
print(curr.data, end=' ')
41+
if curr.left:
42+
queue.append(curr.left)
43+
if curr.right:
44+
queue.append(curr.right)
45+
46+
print()
47+
48+
49+
if __name__ == "__main__":
50+
tree = Tree()
51+
tree.root = TreeNode(1)
52+
tree.root.left = TreeNode(2)
53+
tree.root.right = TreeNode(3)
54+
tree.root.left.left = TreeNode(4)
55+
tree.root.left.right = TreeNode(5)
56+
tree.root.right.left = TreeNode(6)
57+
tree.root.right.right = TreeNode(7)
58+
59+
print("Inorder: ")
60+
tree.in_order()
61+
print("Level order:")
62+
tree.level_order()
63+
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Program to implement level order traversal - recursive version
2+
3+
class TreeNode:
4+
"""Representation of a binary tree node"""
5+
def __init__(self, data):
6+
self.data = data
7+
self.left = None
8+
self.right = None
9+
10+
class Tree:
11+
"""Representation of a binary tree"""
12+
def __init__(self):
13+
self.root = None
14+
15+
def in_order(self):
16+
"""In order traversal of the tree"""
17+
current = self.root
18+
stack = []
19+
done = False
20+
while not done:
21+
if current is not None:
22+
stack.append(current)
23+
current = current.left
24+
25+
elif stack:
26+
current = stack.pop()
27+
print(current.data, end=' ')
28+
current = current.right
29+
else:
30+
done = True
31+
print()
32+
33+
def height_util(self, node):
34+
"""Utility function for recursive calculation of the height of the tree"""
35+
if not node:
36+
return 0
37+
else:
38+
lheight = self.height_util(node.left)
39+
rheight = self.height_util(node.right)
40+
return lheight+1 if lheight > rheight else rheight + 1
41+
42+
def height(self):
43+
"""Height of the tree"""
44+
return self.height_util(self.root)
45+
46+
def print_level(self, node, level):
47+
"""Prints current level of the tree"""
48+
if not node:
49+
return
50+
if level == 1:
51+
print(node.data, end=' ')
52+
elif level > 1:
53+
self.print_level(node.left, level-1)
54+
self.print_level(node.right, level-1)
55+
56+
def level_order(self):
57+
"""Print level order traversal of the tree in recursive manner"""
58+
h = self.height()
59+
for i in range(1, h+1):
60+
self.print_level(self.root, i)
61+
62+
63+
64+
if __name__ == "__main__":
65+
tree = Tree()
66+
tree.root = TreeNode(1)
67+
tree.root.left = TreeNode(2)
68+
tree.root.right = TreeNode(3)
69+
tree.root.left.left = TreeNode(4)
70+
tree.root.left.right = TreeNode(5)
71+
tree.root.right.left = TreeNode(6)
72+
tree.root.right.right = TreeNode(7)
73+
74+
print("Inorder: ")
75+
tree.in_order()
76+
print("Level order:")
77+
tree.level_order()
78+
79+
print()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /