Java実装LeetCode 173バイナリ検索ツリーのイテレータ

173バイナリ検索ツリーのイテレータ

バイナリ検索ツリーのイテレータを実装します。あなたはイテレータが、バイナリ検索ツリーを初期化し、ルートノードを使用します。

()次の呼び出し、最低でも二分探索木の数を返します。

例:
ここに画像を挿入説明

反復子は、新しい新しいBSTIterator BSTIterator(ルート)=;
Iterator.next(); //戻り3。
Iterator.next(); //戻り7。
iterator.hasNext(); trueに//戻り
Iterator.next(); //戻り9。
イテレータ.hasNext(); trueに//戻り
Iterator.next(); //戻り15
iterator.hasNext(); trueに//戻り
Iterator.next(); //戻り20は
iterator.hasNext(); //返し偽

ヒント:

次の()とのhasNext()の動作時間の複雑さはO(1)であり、hは木の高さであるO(H)メモリを、使用します。
あなたが次に小さい番号の少なくとも一方の存在下で、次の()、BSTを呼び出すときは、その次の()の呼び出しであることを、常に有効であると仮定することができます。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class BSTIterator {
 private TreeNode root;
    private List<Integer> inOrder;
    private Iterator<Integer> it;
    //中序遍历
 
    
    private void inorder(TreeNode root){
        if(root!=null){
            inorder(root.left);
            inOrder.add(root.val);
            inorder(root.right);
        }
    }
    
    public BSTIterator(TreeNode root) {
        this.root=root;
        this.inOrder = new ArrayList<>();
        inorder(this.root);
        it=this.inOrder.iterator();
    }
    
    /** @return the next smallest number */
    public int next() {
        return this.it.next();
    }
    
    /** @return whether we have a next smallest number */
    public boolean hasNext() {
        if(this.it.hasNext())
            return true;
        return false;
    }
}

/**
 * Your BSTIterator object will be instantiated and called as such:
 * BSTIterator obj = new BSTIterator(root);
 * int param_1 = obj.next();
 * boolean param_2 = obj.hasNext();
 */
リリース1290元の記事 ウォンの賞賛10000 + ビュー920 000 +

おすすめ

転載: blog.csdn.net/a1439775520/article/details/104455947