
做这个题我们想到另一颗树的子树就是父树的子树与那一颗树相同,
这是相同的树的判断


接下来就是根据判断来写代码
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
}
}
链接:另一颗树的子树!
本文解析了如何通过递归实现判断两棵树是否相同,并利用该方法实现子树查找功能。重点在于`isSameTree`函数的实现和`isSubtree`中递归的应用。适合理解树结构和递归算法的读者。
1200

被折叠的 条评论
为什么被折叠?



