173. Binary Search Tree Iterator
brute force 当然是直接在初始化的时候inorder
遍历完,但这样不满足 follow-up 空间复杂度O(h) 的要求,最好就是写成 iterative inorder,每次call next() 就返回一个元素值。
class BSTIterator:
def __init__(self, root: TreeNode):
self.stack = []
self.root = root
def next(self) -> int:
while self.root or self.stack:
if self.root:
self.stack.append(self.root)
self.root = self.root.left
else:
self.root = self.stack.pop()
res = self.root.val
self.root = self.root.right
return res
def hasNext(self) -> bool:
return True if self.root or self.stack else False
Last updated
Was this helpful?