Skip to content

Commit db302c4

Browse files
Binary Tree Traversal
Inorder Recursive, Inorder Iterative, Preorder Recursive, Preorder Iterative, PostOrder Recursive, PostOrder Iterative, Level-Order Traversals
1 parent 312db35 commit db302c4

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

BinaryTreeTraversal.py renamed to Binary Tree Traversal.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,26 @@ def inorder_traversal_recur(self, root):
4444
self.inorder_traversal_recur(root.right)
4545
else:
4646
return
47+
48+
def inorderTraversalIterative(self, root: TreeNode) -> List[int]:
49+
"""
50+
We need to use a Data Structure which gives us recently visited nodes thus, we use STACK(LIFO). There can be a time when stack
51+
is empty but we haven't visited the whole tree/ all the nodes so we iterate until the stack is empty or node!=None.
52+
If node is None it means left or right leaf is reached and we need to trace back to recently visited node's parent which isn't
53+
yet visited or whose right or left leaves are still unvisited. Keep adding them to the stack and popping them if node is None.
54+
"""
55+
stack = list()
56+
inorder_traversal = list()
57+
node = root
58+
while node or len(stack):
59+
if node:
60+
stack.append(node)
61+
node = node.left
62+
else:
63+
node = stack.pop()
64+
inorder_traversal.append(node.val)
65+
node = node.right
66+
return inorder_traversal
4767

4868

4969

0 commit comments

Comments
 (0)