二叉树OJ题(二)

简介: ✅每日一练:572. 另一棵树的子树 - 力扣(LeetCode)

faa24f653e9e42969f435bfdc209c7e7.png

解题思路:

1.如果根节点为空,那么返回false;

2.如果根节点相同,那么我们需要判断这2棵树是否相同,我们可以借助上面写的isSameTree方法去判断,如果相同,则subRoot是root的子树;

3.如果根节点不相同,我们需要在左子树或者右子树去找是否有和subRoot相同的树;

代码:

publicbooleanisSubtree(TreeNoderoot, TreeNodesubRoot) {
if(root==null||subRoot==null){
returnfalse;
        }
//判断2棵树是否相同if(isSameTree(root,subRoot)){
returntrue;
        }
//判断左子树是否有subRootif(isSubtree(root.left,subRoot)){
returntrue;
        }
//判断右子树是否有subRootif(isSubtree(root.right,subRoot)){
returntrue;
        }
returnfalse;
    }
publicbooleanisSameTree(TreeNodep, TreeNodeq) {
//如果p,q都为空,那么这2个树一定相同if (p==null&&q==null) {
returntrue;
        }
//如果q为空,p不为空,那么一定不相同if (p!=null&&q==null) {
returnfalse;
        }
//如果p为空,q不为空,那么一定不相同if (p==null&&q!=null) {
returnfalse;
        }
//如果p,q都不为空,那么要判断值,如果值不相同,那么一定不相同if (p.val!=q.val) {
returnfalse;
        }
//如果p,q都不为空,并且p,q的值相同,那么要判断p,q的左右子树的值,如果相同为真,反之;returnisSameTree(p.left, q.left) &&isSameTree(p.right, q.right);
    }

目录
相关文章
|
7月前
二叉树oj题集(LeetCode)
二叉树oj题集(LeetCode)
|
7月前
二叉树OJ题(1)
二叉树OJ题(1)
42 0
|
7月前
|
API
Leetcode-二叉树oj题
Leetcode-二叉树oj题
36 0
Leetcode-二叉树oj题
|
7月前
|
存储
二叉树相关OJ题
二叉树相关OJ题
|
7月前
LeetCode-二叉树OJ题
LeetCode-二叉树OJ题
37 0
|
7月前
二叉树OJ题目(2)
二叉树OJ题目(2)
40 0
|
7月前
二叉树基础OJ题
二叉树基础OJ题
41 1
LeetCode——OJ题之二叉树【上】
LeetCode——OJ题之二叉树【上】
51 1
|
7月前
|
API
二叉树的OJ练习(二)
二叉树的OJ练习(二)
|
7月前
|
API C语言
二叉树的OJ练习(一)
二叉树的OJ练习(一)