タイトル説明
二つのバイナリ入力は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);
}
}