【leetcode】【173】Binary Search Tree Iterator
来源:互联网 发布:网络规划设计师真题 编辑:程序博客网 时间:2024/06/06 02:44
一、问题描述
Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.
Calling next()
will return the next smallest number in the BST.
Note: next()
and hasNext()
should run in average O(1) time and uses O(h) memory, where h is the height of the tree.
二、问题分析
这是一道design类的题目。涉及的是二叉查找树,题目要求uses O(h) memory,因此我们不能先完全遍历完,然后再访问。也不能next()一次现遍历,结合树的非递归遍历方法,我们需要一个存储结构来暂存提前遍历的某些数据,因此可以用stack。因此结合二叉查找树的特点和树的非递归遍历,比较能想到。
三、Java AC代码
public class BSTIterator { private TreeNode root ;private LinkedList<TreeNode> stack ;public BSTIterator(TreeNode root) {this.root = root;stack = new LinkedList<TreeNode>();setNext(root);} public void setNext(TreeNode root){ while(root!=null){ stack.push(root); root = root.left; } }/** @return whether we have a next smallest number */public boolean hasNext() {return !stack.isEmpty();}/** @return the next smallest number */public int next() { TreeNode node = stack.pop(); setNext(node.right);return node.val;}}
0 0
- leetcode 173: Binary Search Tree Iterator
- leetcode-173 Binary Search Tree Iterator
- Leetcode[173]-Binary Search Tree Iterator
- LeetCode(173) Binary Search Tree Iterator
- [LeetCode 173] Binary Search Tree Iterator
- [leetcode-173]Binary Search Tree Iterator(java)
- 【LEETCODE】173-Binary Search Tree Iterator
- LeetCode—173 Binary Search Tree Iterator
- leetcode #173 Binary Search Tree Iterator
- LeetCode(173) Binary Search Tree Iterator
- 【leetcode】【173】Binary Search Tree Iterator
- 【LeetCode-173】Binary Search Tree Iterator
- Leetcode 173: Binary Search Tree Iterator
- LeetCode[173] Binary Search Tree Iterator
- LeetCode No.173 Binary Search Tree Iterator
- LeetCode #173 - Binary Search Tree Iterator - Medium
- [Leetcode] #173 Binary Search Tree Iterator
- Leetcode 173 Binary Search Tree Iterator
- 正确使用Android性能分析工具——TraceView
- 项目中遇到类似的时区与时间问题总结(令牌问题)-java编程
- JavaWeb之Servlet编程
- 第6章 andriod ARM 实战番外篇 2
- K-Means
- 【leetcode】【173】Binary Search Tree Iterator
- 3.Linux中fork()函数
- JAVA笔记之toString方法
- zend studio快捷键
- 公司用到的一些 iOS 开源库和第三方组件
- JavaScript词法结构
- Java开发中的23种设计模式详解(转)
- matlab cond(H)判断矩阵病态
- jquery插入html标签