一、题目
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
二、思路
先判断这两棵树的的结果是否相同。
1.两棵树可能第二棵节点数少,那当第二棵走到某个节点为空的时候,第一棵不为空。此时结构不相同。

2.两棵树可能第一棵节点数少,那当第一棵走到某个节点为空的时候,第二棵不为空。此时结构不相同。

3.第一颗树的左(右)子树和第二课数左(右)子树对应不上。

在结构相同的基础上判断这两棵树的对应节点是否相同

如上图,就是对应值不一样
三、代码实现
java
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;
}
return isSameTree(q.left,p.left) && isSameTree(q.right,p.right);
}
}