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.
Implementation:
/** * 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 = new Stack<TreeNode>(); public BSTIterator(TreeNode root) { pushLeft(root); } private void pushLeft(TreeNode node) { while(node != null) { stack.push(node); node = node.left; } } /** @return whether we have a next smallest number */ public boolean hasNext() { return !stack.isEmpty(); } /** @return the next smallest number */ public int next() { TreeNode n = stack.pop(); pushLeft(n.right); return n.val; } } /** * Your BSTIterator will be called like this: * BSTIterator i = new BSTIterator(root); * while (i.hasNext()) v[f()] = i.next(); */
Reference:
http://classes.engr.oregonstate.edu/eecs/spring2012/cs261/lectures/BST_Iterator.pdf
http://n00tc0d3r.blogspot.com/2013/08/implement-iterator-for-binarytree-i-in.html
相关推荐
java java_leetcode-99-recover-binary-search-tree
java java_leetcode-107-binary-tree-level-order-traversal
java java_leetcode-102-binary-tree-level-order-traversal
java java_leetcode-110-balanced-binary-tree
java java_leetcode-maximum-depth-of-binary-tree
java java_leetcode-114-flatten-binary-tree-to-linked-list
java java_leetcode-111-minimum-depth-of-binary-tree
java java_leetcode-105-construct-binary-tree-from-preorder-and-inorde
javascript js_leetcode题解之173-binary-search-tree-iterator.js
python python_leetcode_109_Convert_Sorted_List_to_Binary_Search_Tree
java java_leetcode-101-symmetric-tree
java java_leetcode-100-same-tree
c语言入门 c语言_leetcode题解543-diameter-of-binary-tree.c
js js_leetcode题解之99-recover-binary-search-tree.js
js js_leetcode题解之98-validate-binary-search-tree.js
"leetcode-tag-Tree" 指的是 LeetCode 上与“树”相关的标签,这通常意味着这些题目涉及到数据结构中的树型结构。树是一种非线性的数据结构,由若干个节点(或称为顶点)和连接这些节点的边组成,每个节点都可能有零...
javascript js_leetcode题解之109-convert-sorted-list-to-binary-search-tree.js
js js_leetcode题解之108-convert-sorted-array-to-binary-search-tree.js
js js_leetcode题解之105-construct-binary-tree-from-preorder
javascript js_leetcode题解之110-balanced-binary-tree.js