输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。
剑指 Offer 26. 树的子结构 - 力扣(LeetCode) (leetcode-cn.com)
//先在A树中找到B的根节点,然后判断以该节点为根节点的子树中是否包含B树
class Solution {
public boolean isSubStructure(TreeNode A, TreeNode B) {
if(A == null || B == null){
return false;
}
if(A.val == B.val){
if(isEqual(A, B)){
return true;
}
}
return isSubStructure(A.left, B) || isSubStructure(A.right, B);
}
public boolean isEqual(TreeNode A, TreeNode B){
if(A == null && B != null){
return false;
}
if(B == null){
return true;
}
if(A.val == B.val){
return isEqual(A.left, B.left) && isEqual(A.right, B.right);
}else{
return false;
}
}
}