Skip to content

Commit dd32532

Browse files
committed
update
1 parent e7d4146 commit dd32532

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

[A]tree/[A]tree-dfs-inorder/173-binary-search-tree-iterator.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,30 @@
77
class BSTIterator:
88

99
def __init__(self, root: Optional[TreeNode]):
10-
node = root
1110
self.stack = []
12-
while node:
13-
self.stack.append(node)
14-
node = node.left
11+
self.node = root
1512

1613
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
2423

2524
def hasNext(self) -> bool:
26-
return self.stack
25+
if self.stack or self.node:
26+
return True
27+
return False
2728

2829
# Your BSTIterator object will be instantiated and called as such:
2930
# obj = BSTIterator(root)
3031
# param_1 = obj.next()
3132
# param_2 = obj.hasNext()
3233

33-
# time O(1), due to amortized, initiation is O(h)
34+
# time O(1), due to amortized
3435
# space O(h), only store left nodes, so stack's size is tree height
3536
# using tree and dfs (inorder and iterative) and stack to store the left nodes

0 commit comments

Comments
 (0)