思路一:
- 我创立一个方法compare,传入两个树A和B,从头结点开始对比,判断B是不是A的一个子树。
- 在isSubStructure方法中,先调用compare方法,如果true,返回true,如果是false,说明从A的头结点开始对比是不对的,再从A的左或者A的右调用isSubStructure方法。
public class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
if (A == null || B == null) return false;
if (compare(A, B)) {
return true;
} else {
return isSubStructure(A.left, B) || isSubStructure(A.right, B);
}
}
public boolean compare(TreeNode A, TreeNode B) {
if (B == null) return true;
if (A == null) return false;
if (A.val != B.val) {
return false;
} else {
return compare(A.left, B.left) && compare(A.right, B.right);
}
}
}