题目描述:
给定两颗二叉树A、B,判断二叉树B是否二叉树A的子结构。若是返回true, 不是返回false。
示例:
解题思路:
对树A与树B, 若A中某节点与树B根节点对应则向下判断。否则判断A的左节点是否对应树B根节点,或者A的右节点是否对应树B根节点。
因此需另写一递归函数,判断当前递归节点是否与B的根节点对应。
代码:
class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
if(B == null || A == null){
return false;
}
return hasSame(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B);
}
public boolean hasSame(TreeNode A, TreeNode B){
if(B == null){
return true;
}
if(A == null || A.val != B.val){
return false;
}
return hasSame(A.left, B.left) && hasSame(A.right, B.right);
}
}