安全下部構造ツリーを証明するために提供します

タイトル説明

二つのバイナリ入力はA、B、BはAさんを下部ではないと判断されます。

思考

ルートノードが同じ再帰呼び出しisSubtreeWithRoot()である場合には、ルートノードが同じでない場合、その後、左の部分木が決定され、ROOT1のroo2が同じで、右部分木かどうかを判断しroot2同じ;
注意ノード空の状態、isSubStructure()で、ツリーが空の戻り偽長いほど、オーバーisSubtreeWithRoot()、最初の決意のroot2、root2が空である場合、第2ツリートラバーサル、すなわち、マッチが成功しました。

参照コード

class Solution {
    public boolean isSubStructure(TreeNode A, TreeNode B) {
        if (A == null || B == null) {
            return false;
        }

        return (isSubtreeWithRoot(A, B)  || isSubStructure(A.left, B) || isSubStructure(A.right, B));
    }

    public boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) {
            if (root2 == null) return true;
            if (root1 == null) return false;
            if (root1.val != root2.val) return false;
            return isSubtreeWithRoot(root1.left, root2.left) && isSubtreeWithRoot(root1.right, root2.right); 
    }
}
リリース7件のオリジナルの記事 ウォンの賞賛0 ビュー1349

おすすめ

転載: blog.csdn.net/Incanus_/article/details/105252840