バイナリツリーは二分探索木であるかどうかを確認する方法

ツリーは二分探索木であるかどうかを判断するために完全なバイナリツリーを印刷するように与えられた偽の、そして真の印刷されて、ではない言葉

説明:
空のツリーまたは以下の特性を有する二分木のいずれかであり、バイナリ検索ツリー(バイナリ検索ツリー):その左サブツリーは、左の部分木の、値が空でない場合、以下のすべてのノードルートノードの値、その右サブツリーが空でない場合、右の部分木は、根の値よりも大きい全てのノード、その左右のサブツリーは二分探索木であります。
B。完全なバイナリツリーは、子ノードなしの最後を除いて、各レイヤ上のすべてのノードは、二分木の2つのつの子ノードを有しています

C。ツリーノードが10,000以上ではない場合、ノードは、以上の整数非ヌルである、または空の空のツリーノードの入力未満65536 0 Noneです

考える:プライムバイナリ検索ツリートラバーサル順序は、すべての時間が順トラバーサルに決定することができ、昇順です。

コードの入力と出力は、それを自分で試すことができません

フロントバイナリツリーの先行順について:https://www.cnblogs.com/nlw-blog/p/12405985.html

輸入java.util.Stackを;
クラスツリーノード{
     int型値。
    TreeNodeの左。
    TreeNodeの右;
    ツリーノード(INTの値){
         この .VALUE = 値。
    }
}
パブリック クラスツリー{
     パブリック 静的 ブールisBST(ツリーノードのノード){
        スタック <のTreeNode>スタック= 新しいスタック<のTreeNode> ();
        int型のres = はInteger.MIN_VALUE。
        一方(ノード!= NULL ||!stack.isEmpty()){
             一方(ノード!= NULL ){
                stack.push(ノード)。
                ノード = node.left。
            }
            もし(!stack.isEmpty()){
                 int型データ= 。stack.pop()値。
                場合(データ< RES){
                     戻り 
                } {
                    RES = データ。
                    ノード = node.right。
                }
            }
        }
    }
    パブリック 静的 ボイドメイン(文字列[]引数){
    }
}

 

おすすめ

転載: www.cnblogs.com/nlw-blog/p/12406114.html