[Leetcode]Binary Search Tree
来源:互联网 发布:key软件授权工具 编辑:程序博客网 时间:2024/06/05 18:28
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.
现将从root到root最左边的element全部加入stack。每次pop的element则为最小。pop后再将pop出的TreeNode的右树最左node全部加入stack。
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class BSTIterator { public BSTIterator(TreeNode root) { if(root != null){ stack.push(root); root = root.left; 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 nextNode = stack.pop(); TreeNode cur = nextNode.right; while(cur != null){ stack.push(cur); cur = cur.left; } return nextNode.val; } private Stack<TreeNode> stack = new Stack<>();}/** * Your BSTIterator will be called like this: * BSTIterator i = new BSTIterator(root); * while (i.hasNext()) v[f()] = i.next(); */
0 0
- [Leetcode]Binary Search Tree
- LeetCode: Validate Binary Search Tree
- LeetCode: Recover Binary Search Tree
- [Leetcode] Validate Binary Search Tree
- LeetCode: Recover Binary Search Tree
- LeetCode : Validate Binary Search Tree
- [Leetcode] Recover Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- [LeetCode] Unique Binary Search Tree
- [Leetcode] Recover Binary Search Tree
- [leetcode] recover binary search tree
- [LeetCode] Validate binary search tree
- LeetCode -- Recover Binary Search Tree
- [LeetCode]Recover Binary Search Tree
- [LeetCode]Validate Binary Search Tree
- [LeetCode] Recover Binary Search Tree
- LeetCode:Recover Binary Search Tree
- perl \s \s* \s+
- OWIN - Open Web Interface for .NET
- hysbz 2243(树链剖分+区间合并)
- 新东西012--Android软键盘弹出位置控制
- QT5入门之13 - 获取当前路径
- [Leetcode]Binary Search Tree
- vc2008编译libjpeg
- shell编程(四)引号
- ReactJs 样式类的使用
- mongo3在Mac上安装
- 页面获取不到session中值
- 0133 用Redis存储Tomcat集群的Session
- HMaster不能被启动
- IE不支持getElementsByClassName最终完美解决方案