题目
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 :
注意点
1、确定递归出口:
- 两棵树都为空时;
- 当一棵树为空,另一棵树还有节点时;
- 两棵树同一节点的值不同时。
2、确定递归情况:递归判断左右子树。(使用“&&”是因为所有节点都相同才算相同)
实现
public boolean isSameTree(TreeNode p, TreeNode q) {
//当两棵树都为空时,返回true
if(p == null && q == null) return true;
//当一棵树为空,另一棵树还有节点时,返回false
if(p == null || q == null) return false;
//当两棵树同一节点的值不同时,返回false
if(p.val != q.val) return false;
//递归判断左右子树
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}