[C/C++]数据结构 关于二叉树的OJ题(利用分治思想解决难题)

news/2024/2/27 21:05:26

题目一: 单值二叉树

🚩⛲🌟⚡🥦💬 

🚩题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目描述: 

                如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

        只有给定的树是单值二叉树时,才返回 true;否则返回 false。 

💬 示例:

示例1:

输入:[1,1,1,1,1,null,1]
输出:true

示例2:

输入:[2,2,2,5,2]
输出:false

🌟解题思路: 

         已知 A=B,B=C 可推出 A=C

  •  若根节点的值与其子树结点相同,子树结点又与其子树结点相同,就可推出根节点与其子树的子   树相同,所以可以把这个大问题分为许多小问题: 父节点的值是否与其子节点的值相同
  •  二叉树是由根节点和左子树、右子树构成,其每个子树又可以看作是由根节点和左右子树构成
  •  利用递归思想,依次判断每个子树的根节点的值是否与其左右子树的值相同
  •  空树不违背单值二叉树

代码实现:

bool isUnivalTree(struct TreeNode* root) {if(root == NULL)return true;if(root->left&&root->left->val! = root->val)return false;if(root->right&&root->right->val! = root->val)return false;return isUnivalTree(root->left) && isUnivalTree(root->right);
}

题目二: 相同的树

🚩题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目描述: 

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

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

💬 示例:

示例1:

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

示例2:

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

🌟解题思路: 

  • p 树的根节点和 q 树的根节点比较。
  • p 树的左子树和 q 树的左子树比较。
  • p 树的右子树和 q 树的右子树比较。
  • 如果两个二叉树都为空,则两个二叉树相同。如果两个二叉树中有且只有一个为空,则两个二叉树一定不相同。如果两个二叉树都不为空,那么首先判断它们的根节点的值是否相同,若不相同则两个二叉树一定不同,若相同,再分别判断两个二叉树的左子树是否相同以及右子树是否相同。

代码实现:

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//都为空if(p == NULL && q == NULL)return true;//一个为空一个不为空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);
}

http://www.ppmy.cn/news/1256072.html

相关文章

【Vulnhub 靶场】【Momentum: 2】【简单】【20210628】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/momentum-2,702/ 靶场下载:https://download.vulnhub.com/momentum/Momentum2.ova 靶场难度:简单 发布日期:2021年06月28日 文件大小:698 MB 靶场作者&#xff1…

C++学习之路(十七)C++ 用Qt5实现一个工具箱(增加托盘图标并且增加显示和退出菜单)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《为屏幕颜色提取功能增加一个点击复制的功能》功能。今天我们增加一个比较正式点的功能,就是增加托盘图标并且增加显示和退出菜单(越来越像回事了吧 😁 )。下面我们就来…

geoserver维度time

postgis创建date类型的字段 写入测试数据,对应flag,flag有不同的样式,这样方便观测 geoserver发布图层的时候设置“维度”启用 测试,设置了根据flag展示不同的颜色

Linux系统中进程间通信(Inter-Process Communication, IPC)

文章目录 进程间通信介绍进程间通信目的进程间通信发展 管道什么是管道 匿名管道用fork来共享管道原理站在文件描述符角度-深度理解管道站在内核角度-管道本质管道读写规则管道特点 命名管道创建一个命名管道匿名管道与命名管道的区别命名管道的打开规则 命名管道的删除用命名管…

北斗如何保障能源安全?中海达再赴石油石化盛会推广新技术

11月29日-30日,第三届中国石油石化网络安全应用研讨会暨北斗导航能源安全技术交流会在深圳召开。本次活动主题为“石油石化网络安全,新时代、新征程”,由中国石油学会北斗导航与通信专业委员会、中石油、国家管网等单位联合举办。中海达受邀携…

前端知识笔记(二十七)———CSS核心功能手册:从熟悉到精通

参考HTML代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wi…

智能制造热点词汇科普篇——LaaS、SaaS、PaaS

随着智能制造的不断普及&#xff0c;越来越多的制造企业选择进行数字化转型增强自身的综合竞争力。自动化、信息化、智能化是实现数字化转型的三个重要步骤&#xff0c;在进行对企业的充分调研后&#xff0c;选择适合自己的自动化设备、信息化软件&#xff0c;最后与各种智能化…

MySQL库与表的备份

库的备份 备份 语法 mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径 例 mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql 注意 这是在linux命令行下。 还原 语法 scource 数据库文件路径 例 source D:/mysql-5.7.22/mytest.s…

Redis--15--缓存穿透 击穿 雪崩

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 缓存穿透 击穿 雪崩运行速度:1 缓存穿透问题描述:如何解决: 2 缓存击穿问题描述:如何解决: 3 缓存雪崩说明:解决方案: 缓存穿透 击穿 雪崩 问题描述: 由于海量的用…

中海达两项技术成果成功入选水利部第四届水文监测仪器设备推介名录

11月30日&#xff0c;由水利部科技推广中心主办&#xff0c;水利部国际合作与科技司和水利部水文司参与指导&#xff0c;长江水利委员会水文局和长江科学院共同协办的第四届水文监测仪器设备推介会在武汉香格里拉大酒店隆重举办&#xff0c;共有79家技术持有单位115项技术参会推…

linux具体命令(持续更新中)

1. cd CD命令是Linux和类Unix操作系统中非常常用的一个命令&#xff0c;它的全称是“change directory”&#xff0c;用于改变当前的工作目录。用户可以通过这个命令进入到不同的目录中&#xff0c;进行文件操作或是执行其他任务。 以下是CD命令的一些基本用法&#xff1a; 进…

申请Azure学生订阅——人工验证

一&#xff1a;联系客服进行人工验证 点击 Services Hub 填写资料申请人工验证 点击 Azure - Sign up 进行学生验证 二&#xff1a;与客服的邮件沟通的记录 ​​​​一、结果&#xff08;输入客服给的验证码后&#xff0c;笔者便得到了学生订阅&#xff09;&#xff1a; 二…

openmmlab环境搭建及模拟kitti数据集跑pointpillars模型

点云训练—openmmlab环境搭建及模拟kitti数据集跑pointpillars模型 1 环境搭建 在我的 linux 服务器上&#xff0c;基于ubuntu20.04 参见&#xff1a;开始你的第一步 — MMDetection3D 1.3.0 文档 1.1 本地环境已安装anaconda. anaconda的安装参见博文&#xff1a;DS6.1-Y…

〖大前端 - 基础入门三大核心之JS篇㊹〗- DOM事件委托

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

举例说明自然语言处理(NLP)技术。

本文章由AI生成&#xff01; 以下是自然语言处理&#xff08;NLP&#xff09;技术的一些例子&#xff1a; 机器翻译&#xff1a;将一种语言翻译成另一种语言的自动化过程。常见的机器翻译系统包括谷歌翻译&#xff0c;百度翻译等。 语音识别&#xff1a;将口头语言转换成文本…

《开箱元宇宙》:Madballs 解锁炫酷新境界,人物化身系列大卖

你是否曾想过&#xff0c;元宇宙是如何融入世界上最具代表性的品牌和名人的战略中的&#xff1f;在本期的《开箱元宇宙》 系列中&#xff0c;我们与 Madballs 的战略顾问 Derek Roberto 一起聊聊 Madballs 如何在 90 分钟内售罄 2,000 个人物化身系列&#xff0c;以及是什么原…

第三方支付原理

1.什么是第三方支付 所谓第三方支付&#xff0c;就是一些和各大银行签约、并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台的交易中&#xff0c;买方选购商品后&#xff0c;使用第三方平台提供的账户进行货款支付&#xff0c;由第三方通知卖…

在龙蜥 anolis os 23 上 源码安装 PostgreSQL 16.1

在龙蜥 OS 23上&#xff0c;本来想使用二进制安装&#xff0c;结果发现没有针对龙蜥的列表&#xff1a; 于是想到了源码安装&#xff0c;下面我们列出了PG源码安装的步骤&#xff1a; 1.安装准备 1.1.创建操作系统组及用户 groupadd postgres useradd -g postgres -m postgr…

MATLAB 系统辨识 - 在线估计 - Online Estimation

系列文章目录 MATLAB 模型参考自适应控制 - Model Reference Adaptive Control MATLAB 自抗扰控制 - Active Disturbance Rejection Control 文章目录 系列文章目录前言一、在线参数估计二、使用步骤 前言 在线估计&#xff08;Online estimation&#xff09;算法是在物理系…

万宾科技监测设备,可燃气体监测仪特点一览

万宾科技的监测设备种类繁多&#xff0c;包括可燃气体监测仪、管网水位监测仪、内涝积水监测仪等。其中可燃气体监测仪是万宾科技的核心产品之一&#xff0c;用于监测环境中可燃气体的浓度&#xff0c;适用于对甲烷气体浓度进行实时监测&#xff0c;应用于燃气管网、排水管网、…
最新文章