二叉搜索树迭代器
二叉搜索树迭代器

这题主要是读题,理解了题意就好做了。题中主要的目的是完成:
1.next()函数,用来获得下一个最大值
2.hasnext()函数,用来获得是否有下一个节点
3.init函数,初始化的时候需要做的工作
那么思路就很清晰了,我们将所有节点的值保存在一个list里面,然后访问的时候就简单了。所以先写一个中序遍历的函数,为什么是中序遍历?因为二叉搜索树的中序遍历的结果的递增的,所以我们中序遍历后直接可以得到我们想要的结果。我们拿到了这个搜索树排序好的所有节点值后,存储起来,那么next函数我们就可以将里面的值一个一个返回,hasnext函数就是和长度相关的判定了。问题迎刃而解。
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class BSTIterator: def inorder(self,root): if not root: return self.inorder(root.left) self.root_val.append(root.val) self.inorder(root.right) def __init__(self, root: TreeNode): self.root_val = [] self.inorder(root) self.len_tree = len(self.root_val) self.dq = -1 def next(self) -> int: self.dq+=1 return self.root_val[self.dq] def hasNext(self) -> bool: if self.len_tree <= self.dq + 1: return False else: return True # Your BSTIterator object will be instantiated and called as such: # obj = BSTIterator(root) # param_1 = obj.next() # param_2 = obj.hasNext()

浙公网安备 33010602011771号