题目描述
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例:
输入:
输出:true
思路分析
通过递归对二叉树各个节点进行比较,以判断两棵树是否相同。
判断递归的返回条件:
1、如果两个节点都为空,说明比较到了尽头,返回 true。
2、如果一个节点为空,另一个节点不为空,两节点不同,返回 false。
3、如果左右子树都相同,返回 true,否则返回 false。
递归所返回的结果 true 和 false 表示以当前节点为根节点所在的两棵子树是否相同。
代码描述
使用 Java 进行代码描述:
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 isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
return false;
}
}