File tree Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -44,6 +44,26 @@ def inorder_traversal_recur(self, root):
44
44
self .inorder_traversal_recur (root .right )
45
45
else :
46
46
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
47
67
48
68
49
69
You can’t perform that action at this time.
0 commit comments