文章目录
题目描述
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
题目分析
要去判断两棵树是否相同,使用递归方法,从宏观角度来看,要判断两颗树的区别,有以下几个条件:
1.当两颗树的根节点都指向空时,说明此时两棵树的深度相同,返回 true。
2.同样的,当两个树的结点中,有一个指向 null 时,这就说明两棵树是存在不同之处的,自然返回 false。
3.除了比对树的结点位置是否相同外,还要比对的是在相同位置上结点的值是否相同,如果不同,就要返回 false。
代码实现
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p == null && q == null){
return true;
}
if(p == null || q == null){
return false;
}
if(p.val != q.val){
return false;
}
return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
}
}