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:
Code (Java):next()
and hasNext()
should run in average O(1) time and uses O(h) memory, where h is the height of the tree./** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class BSTIterator { private TreeNode p; private Stack<TreeNode> stack = new Stack<TreeNode>(); public BSTIterator(TreeNode root) { this.p = root; } /** @return whether we have a next smallest number */ public boolean hasNext() { return !stack.isEmpty() || p != null; } /** @return the next smallest number */ public int next() { while (p != null) { stack.push(p); p = p.left; } TreeNode curr = stack.pop(); p = curr.right; return curr.val; } } /** * Your BSTIterator will be called like this: * BSTIterator i = new BSTIterator(root); * while (i.hasNext()) v[f()] = i.next(); */
Update on 5/20/19:
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } * Example of iterate a tree: * BSTIterator iterator = new BSTIterator(root); * while (iterator.hasNext()) { * TreeNode node = iterator.next(); * do something for node * } */ public class BSTIterator { private Stack<TreeNode> stack; private TreeNode p; /* * @param root: The root of binary tree. */public BSTIterator(TreeNode root) { // do intialization if necessary this.p = root; stack = new Stack<>(); while (p != null) { stack.push(p); p = p.left; } } /* * @return: True if there has next node, or false */ public boolean hasNext() { // write your code here return !stack.isEmpty(); } /* * @return: return next node */ public TreeNode next() { // write your code here TreeNode ans = stack.pop(); p = ans.right; while (p != null) { stack.push(p); p = p.left; } return ans; } }
tour and travel
ReplyDeletemake my trip
red bus booking
coupons for domino’s
book my show
godaddy .com coupons
godaddy .in coupons
discount coupons for myntra
discount coupons for zomato