判断两棵树是否完全一致

简介: 给你两棵二叉树的根节点 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;
}


目录
相关文章
|
消息中间件 存储 Java
【Kafka】Kafka 组件分析
【4月更文挑战第5天】【Kafka】Kafka 组件分析
|
运维 JavaScript Java
govaluate 规则引擎
govaluate 规则引擎
2849 0
govaluate 规则引擎
|
流计算 API Apache
Apache Flink 零基础入门(一):基础概念解析
本文是根据 Apache Flink 基础篇系列直播整理而成,由 Apache Flink PMC 戴资力与阿里巴巴高级产品专家陈守元共同分享。Apache Flink 系列入门教程每周更新一期,持续推送。
Apache Flink 零基础入门(一):基础概念解析
|
11月前
|
JavaScript 前端开发 编译器
吐血整理:纯前端如何实现批量dom转图片,并下载成压缩包
【10月更文挑战第2天】吐血整理:纯前端如何实现批量dom转图片,并下载成压缩包
215 2
|
12月前
|
Linux 虚拟化 Windows
完美解决:重新安装VMware Tools灰色。以及共享文件夹的创建(centos8)
这篇文章提供了解决VMware Tools无法重新安装(显示为灰色)问题的步骤,并介绍了如何在CentOS 8上创建和配置VMware共享文件夹。
完美解决:重新安装VMware Tools灰色。以及共享文件夹的创建(centos8)
|
11月前
|
存储 人工智能 数据挖掘
体验《AI大模型助力客户对话分析》
体验《AI大模型助力客户对话分析》
|
机器学习/深度学习 自动驾驶 算法
深度学习之因果推理与决策
基于深度学习的因果推理与决策是一个将因果推理理论与深度学习技术结合,旨在从数据中学习因果关系并基于此做出最优决策的领域。因果推理不仅关注变量之间的相关性,还侧重于发现变量之间的因果关系,而这些因果关系是决策系统做出有效决策的关键。
299 1
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
305 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
|
存储 对象存储 C++
使用ostringstream处理字符串的方法详解
使用ostringstream处理字符串的方法详解
|
机器学习/深度学习 人工智能 开发者
AI音效生成器概述
这篇文章介绍了AI音效生成器如何助力提升创作体验。AI音效生成器,如ElevenLabs、Audiogen和LOVO AI,利用深度学习创造和编辑音效,为电影制作、游戏开发及播客制作人提供高效、高质量且多样的声音效果。这些工具节省了时间和成本,具有用户友好的界面,方便各类型创作者使用。考虑功能、易用性、音质、成本等因素,选择合适的AI音效生成器能显著增强内容的专业性和吸引力。