Binary Search Tree Iterator
来源:互联网 发布:淘宝小号在哪里购买 编辑:程序博客网 时间:2024/05/01 20:07
Binary Search Tree Iterator
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.
Credits:
Special thanks to @ts for adding this problem and creating all test cases.
This is a problem about in-order traversal, but we need to implement it iteratively.
2. If the stack is not empty, we know that it still has element hasn't been visited.
3. If the current element has right child, pop the current element and push the right child into the stack, then keep pushing the leftmost tree nodes of current node into stack.
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class BSTIterator { private Stack<TreeNode> stack; public BSTIterator(TreeNode root) { stack = new Stack<TreeNode>(); 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(); int ret = node.val; if (node.right != null) { node = node.right; while (node != null) { stack.push(node); node = node.left; } } return ret; }}/** * Your BSTIterator will be called like this: * BSTIterator i = new BSTIterator(root); * while (i.hasNext()) v[f()] = i.next(); */
0 0
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- Binary Search Tree Iterator
- 电脑重启之后流氓软件自动安装之完美解决办法
- 用Ajax配合Restull实现SpringMVC的文件上传
- 流行开源许可证
- jms学习
- PHP获取表单所有复选框的值的方法
- Binary Search Tree Iterator
- java虚拟机的垃圾回收机制
- CDH使用秘籍(二):cloudera Manager中监控数据的存储
- python 操作 MySql 数据库
- Head First jQuery读书笔记
- 用栈(链式)实现十进制到其他进制的转换:
- Graphical Models
- SQL Server 2012 Enterprise Edition安装过程详解(包含每一步设置的含义)
- Ibatis中sqlmap参数map中还需要套list的情况如何写?