分成两部
第一步在A树中寻找与B根节点值相同的节点;
第二步比较A树中是否包含B树结构
class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
if(B == null) return false;
return isSub(A, B);
}
private boolean isSub(TreeNode A, TreeNode B){
if(A == null) return false;
if(A.val == B.val && dfs(A, B))
return true;
return isSub(A.left, B) || isSub(A.right, B);
}
private boolean dfs(TreeNode A, TreeNode B){
if(B == null) return true;
if(A == null) return false;
if(A.val != B.val) return false;
return dfs(A.left, B.left) && dfs(A.right, B.right);
}
}