一、题目描述
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
二、解题思路
首先要明白题意,两个二叉树相同,当且仅当两个二叉树的结构完全相同,且所有对应节点的值相同。因此,可以通过搜索的方式判断两个二叉树是否相同。
先来思考出现的情况:
- 如果两棵树都为空,则两个二叉树相同。
- 如果两个二叉树中有且只有一个为空,则两个二叉树一定不相同
- 如果两个二叉树都不为空,那么首先判断它们的根节点的值是否相同。如不相同则两个二叉树一定不同,若相同,再分别判断两个二叉树的左右字数是否相同。
三、代码演示
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
//第一种情况:当两颗树的当前节点都为null时
if(p==null && q==null){
return true;
}
//第二种情况:当二叉树中当前节点有且仅有一个为null,则两个二叉树一定不相同。
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);
}
}
本文介绍了一种通过递归比较节点值和结构的方法,来判断两棵二叉树是否一致。文章详细阐述了三种基本情况及其对应的解决方案,并提供了一个简洁的Java实现。

被折叠的 条评论
为什么被折叠?



