1.相同的树
如:给你两棵二叉树的根节点 p
和 q
,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
输入:p = [1,2,3], q = [1,2,3] 输出:true
示例 2:
输入:p = [1,2], q = [1,null,2] 输出:false
示例 3:
输入:p = [1,2,1], q = [1,1,2] 输出:false
首先这个题呢,我们采用递归的方法进行求解。
在这我们首先要考虑到的就是关于递归的终止条件是什么。
1. 最好想到的就是当两个节点的值不想同的时候,其两棵树不相同,p.val != q.val。
2. 然后还有什么条件不满足呢,就是,当有一个数遍历完了之后,但另一颗数没有遍历完此时两颗数不相等。其实也就是 (p != null && q == null || p == null && q != null)。这两个条件。
3. 最后一个就是,当两个数相等的时候,返回true,就是当两棵数都遍历完的时候也没有找到哪个地方有什么不同的地方,其为相同的树。
代码:
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p != null && q == null || p == null && q != null){
return false;
}
if(p == null && q == null){
return true;
}
if(p.val != q.val){
return false;
}
boolean a = isSameTree(p.left,q.left);
boolean b = isSameTree(p.right,q.right);
return a && b;
}
}
这里的a和b分别为递归左和递归又的结果,其中一个不为真则两棵树不相等。
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
这是题目的链接,有兴趣的可以挑战一下。