题目:
二叉搜索树迭代器:实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。
思路:
二叉搜索树使用中序,然后弹出栈底。
程序:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class BSTIterator: def __init__(self, root: TreeNode): self.result = [] if root: self.inorder(root) def inorder(self, node): if node.left: self.inorder(node.left) self.result.append(node.val) if node.right: self.inorder(node.right) def next(self) -> int: """ @return the next smallest number """ if self.result: return self.result.pop(0) def hasNext(self) -> bool: """ @return whether we have a next smallest number """ if len(self.result) > 0: return True else: return False # Your BSTIterator object will be instantiated and called as such: # obj = BSTIterator(root) # param_1 = obj.next() # param_2 = obj.hasNext()