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 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)

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