判断两棵树是否完全一致

简介: 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

相同的树


题目描述


给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。


如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

数据样例


示例 1:

eb73de3b798f49a780dce7c4d452ec18.png


输入:p = [1,2,3], q = [1,2,3]
输出:true


示例 2:


c89c8f1ac9c44feb8f8427b0911bff19.png

输入:p = [1,2], q = [1,null,2]
输出:false


示例 3:

f4a8e948d1894c358d717cf1bc00ed26.png


输入:p = [1,2,1], q = [1,1,2]
输出:false


解题思路


要想判断两棵树是否相等——>判断两棵树的根节点的值是否相等&&两棵树根节点的左子树相等&&两棵树根节点的右子树相等——>制定结束条件,循环遍历树的结构——>得出最后结果。

本题的关键点在于制定判断两棵树的条件,我们可以想到“两棵树要相同,其对应位置的节点值必须相同,结构必须相同”。所以得到以下的代码样例。


参考代码


bool isSameTree(TreeNode* p, TreeNode* q) {
    if(p!=nullptr&&q!=nullptr&&p->val==q->val){
        return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
    }
    // 如果遍历到叶子结点,其左右结点都是空结点,则两棵树的结构和值完全相同。
    if(p==nullptr&&q==nullptr){
        return true;
    }
    return false;
}


目录
相关文章
|
10天前
结构体\判断日期是否合法(代码分步解析)
结构体\判断日期是否合法(代码分步解析)
7 1
|
10月前
|
消息中间件 数据采集 Kafka
每次join之后没有正确处理数据的重复或缺失情况
每次join之后没有正确处理数据的重复或缺失情况
94 1
|
9月前
ookie 值的修改方案
ookie 值的修改方案
60 0
|
11月前
|
JavaScript 前端开发
javascript:将数组转为字符串通过判断包含字段进行状态判断的解决方案
javascript:将数组转为字符串通过判断包含字段进行状态判断的解决方案
34 0
|
数据采集 JSON 数据格式
一日一技:如何处理配置文件中的重复值?
一日一技:如何处理配置文件中的重复值?
104 0
ADI
[记录] 字符串、数组处理方法总结
[记录] 字符串、数组处理方法总结
ADI
67 0
运算符优先顺序(包含类型说明)
运算符优先顺序(包含类型说明)
156 0
运算符优先顺序(包含类型说明)
Kam
|
Java
枚举去除大量if-else if -else优化记录
java中去除大量if-else
Kam
323 1
Kam
枚举优化if-else if -else过程记录
枚举优化if-else if -else过程记录
Kam
194 0
|
编译器 API
整合重复的初始化逻辑
整合重复的初始化逻辑
1216 0