File tree 1 file changed +14
-13
lines changed
[A]tree/[A]tree-dfs-inorder
1 file changed +14
-13
lines changed Original file line number Diff line number Diff line change 7
7
class BSTIterator :
8
8
9
9
def __init__ (self , root : Optional [TreeNode ]):
10
- node = root
11
10
self .stack = []
12
- while node :
13
- self .stack .append (node )
14
- node = node .left
11
+ self .node = root
15
12
16
13
def next (self ) -> int :
17
- node = self .stack .pop ()
18
- res = node .val
19
- node = node .right
20
- while node :
21
- self .stack .append (node )
22
- node = node .left
23
- return res
14
+ while self .stack or self .node :
15
+ if self .node :
16
+ self .stack .append (self .node )
17
+ self .node = self .node .left
18
+ else :
19
+ self .node = self .stack .pop ()
20
+ val = self .node .val
21
+ self .node = self .node .right
22
+ return val
24
23
25
24
def hasNext (self ) -> bool :
26
- return self .stack
25
+ if self .stack or self .node :
26
+ return True
27
+ return False
27
28
28
29
# Your BSTIterator object will be instantiated and called as such:
29
30
# obj = BSTIterator(root)
30
31
# param_1 = obj.next()
31
32
# param_2 = obj.hasNext()
32
33
33
- # time O(1), due to amortized, initiation is O(h)
34
+ # time O(1), due to amortized
34
35
# space O(h), only store left nodes, so stack's size is tree height
35
36
# using tree and dfs (inorder and iterative) and stack to store the left nodes
You can’t perform that action at this time.
0 commit comments