力扣572:另一颗树的子树

在这里插入图片描述
做这个题我们想到另一颗树的子树就是父树的子树与那一颗树相同,
这是相同的树的判断
在这里插入图片描述
在这里插入图片描述
接下来就是根据判断来写代码

class Solution {
    
    

 private boolean isSameTree(TreeNode p, TreeNode q) {
    
      //判断两颗树是不是相同
        if(p == null && q == null){
    
    
            return true;
        }
if(p == null && q != null || p != null && q == null){
    
    
    return false;
}
if(p.val != q.val){
    
    
    return false;
}
return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);  //这边是返回true or false
    }

    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
    
    
if(root == null || subRoot == null){
    
      //父树为空 或 子树为空 单项条件都不行
    return false;
}
if(isSameTree(root,subRoot)){
    
      //两颗树相同,返回true
    return true;
}
if(isSubtree(root.left,subRoot)){
    
      //递归父树的左子树跟subRoot比较
    return true;
}
if(isSubtree(root.right,subRoot)){
    
    
    return true;
}
return false;  //左右都没有,返回false
    }
}

链接:另一颗树的子树!

猜你喜欢

转载自blog.csdn.net/chenbaifan/article/details/123601151