Leetcode-98。バイナリ検索ツリーを検証します

それは有効な二分探索木(BST)であれば、バイナリツリーを考えると、決定します。

次のようにBSTが定義されていると想定します。

ノードの左サブツリーがキーでノードだけ含まれている  よりも少ない  ノードの鍵を。

ノードの右部分木は、キーを持つ唯一のノードが含ま  より大きい  ノードの鍵を。

左と右のサブツリーどちらも二分探索木でなければなりません。


バイナリツリーの合法的なテストをして下さい。

これは、左のノード自体よりも小さいすべての値は、すべての権利のノードが自分より大きいことが必要です。

したがって、各時間関数が戻ると、ノードNの左ノードがNの値より大きくなければならないN未満&&より大きくなければならない、N &&右ノードは、Nの値未満より大きくなければならない未満であるべきです。



/ **

*バイナリツリーノードの定義。

*構造体のTreeNode {

* int型のval;

*のTreeNode *左;

*のTreeNode *右;

*ツリーノード(int型X):(NULL)左のval(X)、右(NULL){}

*}。

* /

クラスのソリューション{

パブリック:

    BOOL isValidBST(ツリーノード*ルート){

        返すisValidBST(根、NULL、NULL);

    }

    BOOL isValidBST(ツリーノード*根、ツリーノード* minNode、ツリーノード* maxNode){

        (!ルート)がtrueを返す場合は、

        IF(minNode && root->ヴァル<= minNode->ヴァル|| maxNode && root->値> = maxNode->ヴァル)

            falseを返します。

        isValidBST(root->左、minNode、根)&& isValidBST(root->右、根、maxNode)を返します。

    }

}。

おすすめ

転載: blog.csdn.net/weixin_34290000/article/details/90991338