java 173.二进制搜索树迭代器(#)。java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 173.二进制搜索树迭代器(#)。java相关的知识,希望对你有一定的参考价值。

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */

public class BSTIterator {

    List<Integer> list;
    Iterator<Integer> it;
    
    public BSTIterator(TreeNode root) {
        list=new ArrayList<Integer>();
        inorder(root);
        it=list.iterator();
    }

    public void inorder(TreeNode root){
        if(root==null) return;
        inorder(root.left);
        list.add(root.val);
        inorder(root.right);
    }
    
    /** @return whether we have a next smallest number */
    public boolean hasNext() {
        return it.hasNext();
    }

    /** @return the next smallest number */
    public int next() {
        return it.next();
    }
}

/**
 * Your BSTIterator will be called like this:
 * BSTIterator i = new BSTIterator(root);
 * while (i.hasNext()) v[f()] = i.next();
 */
/**
 * 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 cur = root;
        while (cur != null) {
            stack.push(cur);
            cur = cur.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();
        TreeNode cur = node.right;
        while (cur != null) {
            stack.push(cur);
            cur = cur.left;
        }
        return node.val;
    }
}

/**
 * Your BSTIterator will be called like this:
 * BSTIterator i = new BSTIterator(root);
 * while (i.hasNext()) v[f()] = i.next();
 */

以上是关于java 173.二进制搜索树迭代器(#)。java的主要内容,如果未能解决你的问题,请参考以下文章

java 173.二进制搜索树迭代器(#)。java

java 173.二进制搜索树迭代器(#)。java

java 173.二进制搜索树迭代器(#)。java

java 173.二进制搜索树迭代器(#)。java

java 173.二进制搜索树迭代器(#)。java

java 173.二进制搜索树迭代器(#)。java