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.

Callingnext()will return the next smallest number in the BST.

Note:next()andhasNext()should run in average O(1) time and uses O(h) memory, wherehis the height of the tree.

public class BSTIterator {

    Stack<TreeNode> st = new Stack<>();

    public BSTIterator(TreeNode root) {

           pushBST(root);
    }

    public void pushBST(TreeNode root) {

        while(root != null) {
            st.push(root);
            root = root.left;
        }
    }


    /** @return whether we have a next smallest number */
    public boolean hasNext() {

        return !st.isEmpty();
    }

    /** @return the next smallest number */
    public int next() {

        if(!st.isEmpty()){
            TreeNode node = st.pop();
            pushBST(node.right);
            return node.val;
        }
        return -1; 
    }
}

results matching ""

    No results matching ""