做这个题我们想到另一颗树的子树就是父树的子树与那一颗树相同,
这是相同的树的判断
接下来就是根据判断来写代码
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
}
}
链接:另一颗树的子树!