当前位置: 首页 > news >正文

题目练习之二叉树那些事儿


♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥

♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥

♥♥♥我们一起努力成为更好的自己~♥♥♥

♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥

♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥



知道了二叉树的结构和一些基本操作~这一篇博客是一些关于二叉树的OJ练习题~

练习1:单值二叉树

力扣——965单值二叉树

题目

题目中给出了单值二叉树的含义就是二叉树每一个结点保存的数据相等,函数返回值是bool类型,如果是单值二叉树就返回true,否则返回false。同时题目也给出了它定义的二叉树

思路

既然这里涉及到保存数据的比较,那么肯定需要遍历我们的二叉树了,具体怎么比较呢?我们给出思路~

思路:

让根结点分别与左右孩子结点(孩子结点要不为空)数据比较~如果不相等就返回false~(这里根结点与左右孩子结点比较,就不需要左右孩子结点之间进行比较了,如果【根结点==右孩子结点】&&【根结点==右孩子结点】那么【左孩子结点==右孩子结点】

处理特殊情况:

如果根结点为空,return true;

依次递归比较树的左右子树

代码


bool isUnivalTree(struct TreeNode* root) {if(root == NULL){return true;}//根结点分别与不为空左右孩子结点数据比较//不相等返回falseif(root->left && root->val != root->left->val){return false;}if(root->right && root->val != root->right->val){return false;}//递归比较return (isUnivalTree(root->left))&&(isUnivalTree(root->right));
}

提交通过~再一次体会到了二叉树递归的魅力~

练习2:相同的树

力扣——100相同的树

题目

这个题目希望我们判断两颗树是不是相同的,二叉树相同也就是它们相对应的结点保存的数据相同~

思路

思路:

这个题同样是递归比较的方法,比较两颗树相对应的结点是否相同,如果不相同就返回false

处理特殊情况:

如果两个结点都为空 return true;

如果只有一个结点为空 return false;

依次递归比较两颗树的左右子树

代码


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);
}

提交通过~

练习3:另外一棵树的子树

力扣——另外一棵树的子树

题目

这里是不是就与上一个题目有相通的地方,如果判断一个树是不是另外一棵树的子树,我们是不是也就可以从根结点开始遍历另外一棵树与树进行比较判断是不是相同的树,进而判断是不是子树

思路

从根结点root开始判断,两颗树是不是相同的树,如果不是将左右子树与subRoot进行判断是不是相同的树~

注意:

当根结点为NULL,说明两棵树一定不是相同的树,那么subRoot也就不是root的子树,返回false。

代码

我们这里就可以直接把判断是不是相同的树的代码拿过来~

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);
}
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot) {if(root == NULL){return false;}//两颗树相同是子树if(isSameTree(root , subRoot)){return true;}//递归遍历判断左右子树//只要有一个满足就是return (isSubtree(root->left,subRoot) || isSubtree(root->right,subRoot));
}

提交通过~

练习4:对称二叉树

力扣——101对称二叉树

题目

这里需要我们判断是不是轴对称图形,不是判断左右子树相同,这个题应该怎么做呢?

思路

有了前面两题的基础,相信这一个题目也就是手到擒来~

思路:如果root为NULL,直接返回true。接着我们只需要判断左右子树是不是对称的树,这里的对称也就说明左子树的左结点保存的数据等于右子树的右结点保存的数据左子树的右结点保存的数据等于右子树的左结点保存的数据。

(判断一个树是否对称,首先要判断左右孩子是否对称相等,还需要判断左孩子的左子树是否和右孩子的右子树对称,左孩子的右子树是否和右孩子的左子树对称。)

代码

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->right) && isSameTree(p->right,q->left);
}
bool isSymmetric(struct TreeNode* root) {if(root == NULL){return true;}//比较左右子树if(isSameTree(root->left,root->right)){return true;}//else与最近的if搭配else{return false;}
}

提交通过~

今天的二叉树题目练习结束,再一次体会到了递归的暴力美学~


♥♥♥本篇博客内容结束,期待与各位优秀程序员交流,有什么问题请私信♥♥♥

♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥


相关文章:

题目练习之二叉树那些事儿

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ 知道了二叉树的结…...

数字马力二面面试总结

24.03.07数字马力二面面试总结 前段时间找工作,做的一些面试笔记总结 大家有面试录音或者记录的也可以发给我,我来整理答案呀 数字马力二面面试总结 24.03.07数字马力二面面试总结你可以挑一个你的最有挑战性的,有难度的,最具有复杂性的项目,可以简单说一下。有没有和算…...

优化图片大小的方法

不能起到优化图片大小的方法有(C) A.减少每个像素点能够显示的颜色 B.减少像素点 C.使用ajax加载 D.使用WebP格式 C. 使用Ajax加载 Ajax是一种用于在网页中异步加载数据的技术,与图片大小的优化关系不大。它主要用于提高网页的加载效率&…...

DevOps-课堂笔记

各种 aaS 类比于计算机网络的 OSI 参考模型,一个软件应用项目需要不同的支撑层,例如从下至上大概需要: 硬件层面的服务器针对硬件做弹性分配的虚拟化机制,例如虚拟机在虚拟化环境内运行的 OS支撑软件应用的中间件,例…...

Redis - Hash 哈希

一、基本认识 ⼏乎所有的主流编程语⾔都提供了哈希(hash)类型,它们的叫法可能是哈希、字典、关联数 组、映射。在Redis中,哈希类型是指值本⾝⼜是⼀个键值对结构,形如key"key",value{{ field1, v…...

dns服务部署

配置主文件,编辑主配置文件设置监听IP , 重启服务:[rootlocalhost ~]# systemctl restart network 安装bind 主服务器IP信息: [rootlocalhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 129.168.160.131/24…...

【Hadoop和Hbase集群配置】3台虚拟机、jdk+hadoop+hbase下载和安装、环境配置和集群测试

目录 一、环境 二、虚拟机配置 三、 JDK、Hadoop、HBase的安装和配置 【安装和配置JDK】 【安装和配置Hadoop】 【安装和配置Hbase】 四、 Hadoop和HBase集群测试 【Hadoop启动测试】 【Hbase启动测试】 一、环境 OS: CentOS-7 JDK: v1.8.0_131 Hadoop: v2.7.6 Hb…...

超萌!HTMLCSS:超萌卡通熊猫头

效果演示 创建了一个卡通风格的熊猫头 HTML <div class"box"><div class"head"><div class"head-copy"></div><div class"ears-left"></div><div class"ears-right"></di…...

人脑与机器连接:神经科技的伦理边界探讨

内容概要 在当今科技飞速发展的时代&#xff0c;人脑与机器连接已成为一个引人注目的前沿领域。在这一背景下&#xff0c;神经科技的探索为我们打开了一个全新的世界&#xff0c;从脑机接口到人工智能的飞跃应用&#xff0c;不仅加速了技术的进步&#xff0c;更触动了我们内心…...

Mac M1 Docker创建Rocketmq集群并接入Springboot项目

文章目录 前言Docker创建rocketmq集群创建rocketmq目录创建docker-compose.yml新增broker.conf文件启动容器 Springboot 接入 rocketmq配置maven依赖修改appplication.yml新增消息生产者新增消费者测试发送消息 总结 前言 最近公司给配置了一台mac&#xff0c;正好有时间给装一…...

k8s 查看cpu使用率最高的pod

在 Kubernetes 中&#xff0c;可以使用 kubectl top 命令查看 Pod 的资源使用情况&#xff0c;从而找到 CPU 使用率最高的 Pod。 步骤 使用 kubectl top pods 查看所有 Pod 的 CPU 使用情况 运行以下命令查看集群中所有 Pod 的 CPU 和内存使用情况&#xff1a; kubectl top po…...

jenkins 构建报错 Cannot run program “sh”

原因 在 windows 操作系统 jenkins 自动化部署的时候, 由于自动化构建的命令是 shell 执行的,而默认windows 从 path 路径拿到的 shell 没有 sh.exe &#xff0c;因此报错。 解决方法 前提是已经安装过 git WINR 输入cmd 打开命令行, 然后输入where git 获取 git 的路径, …...

Netty ByteBuf 分配 | 池化复用 、直接内存

Netty ByteBuf 分配 本文主要内容关于 ByteBuf 分配介绍&#xff0c;为了更好的理解本文&#xff0c;我们可以带着几个问题思考 在IO密集型业务场景下&#xff0c;可能涉及大量ByteBuf分配&#xff0c;这时我们需 要考虑会不会产生OOM会不会出现频繁GC会不会内存泄露 根据上…...

【数据结构】堆和二叉树(2)

文章目录 前言一、建堆和堆排序1.堆排序 二、二叉树链式结构的实现1.二叉树的遍历 三、链式二叉树的功能函数1.二叉树结点个数2.二叉树叶子结点个数3.二叉树的高度4.二叉树第k层结点个数5. 二叉树查找值为x的结点6.二叉树销毁 总结 前言 接着上一篇博客&#xff0c;我们继续分…...

Oracle分区技术特性

Oracle 的分区是一种“分而治之”的技术&#xff0c;通过将大表、索引分成可以独立管理的、小的 Segment&#xff0c;从而避免了对每个对象作为一个大的、单独的 Segment 进行管理&#xff0c;为海量数据访问提供了可伸缩的性能。自从 Oracle 引入分区技术以来&#xff0c;Orac…...

Hive操作库、操作表及数据仓库的简单介绍

数据仓库和数据库 数据库和数仓区别 数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别 操作型处理(数据库)&#xff0c;叫联机事务处理OLTP&#xff08;On-Line Transaction Processing&#xff09;&#xff0c;也可以称面向用户交易的处理系统&#xff0c;它是针对具体业务…...

智能网联汽车:人工智能与汽车行业的深度融合

内容概要 在这个快速发展的时代&#xff0c;智能网联汽车已经不再是科幻电影的专利&#xff0c;它正在悄然走进我们的日常生活。如今&#xff0c;人工智能&#xff08;AI&#xff09;技术与汽车行业的结合犹如一场科技盛宴&#xff0c;让我们看到了未来出行的新方向。通过自动…...

VUE 循环的使用方法集锦

vue---循环方式以及跳出循环 在做VUE项目开发过程中&#xff0c;数据循环是常见的操作方式&#xff0c;以下是几种常见的数据循环方式&#xff1a; 一、for循环 let data [1,2,3,4,5,6,7,8,9,10]; for(let i0; i<data.length; i){console.log(data[i]);if(i>5){break;…...

Centos部署资料

1. 离线rpm 1.1 下载地址&#xff1a; 阿里云rpmfind 1.2 本地安装&#xff1a; [rootlocalhost ~]# yum localinstall unzip-6.0-21.el7.x86_64.rpm2. 服务器操作 2.1 修改网络ip [rootlocalhost ~]# cd /etc/sysconfig/network-scripts/ [rootlocalhost network-script…...

AI之硬件对比:据传英伟达Nvidia2025年将推出RTX 5090-32GB/RTX 5080-24GB、华为2025年推出910C/910D

AI之硬件对比&#xff1a;据传英伟达Nvidia2025年将推出RTX 5090-32GB/RTX 5080-24GB、华为2025年推出910C/910D 目录 Nvidia的显卡 Nvidia的5090/5080/4090/4080&#xff1a;据传传英伟达Nvidia RTX 5090后续推出32GB版且RTX 5080后续或推出24GB版 RTX 5090相较于RTX 4090&…...

YOLOv12:以注意力机制重塑实时目标检测的精度与速度边界

1. YOLOv12如何重新定义实时目标检测 当你在手机上刷短视频时&#xff0c;那些自动标记出人物、宠物和物品的方框&#xff1b;当你在超市自助结账时&#xff0c;摄像头快速识别商品的过程&#xff1b;当自动驾驶汽车实时判断前方路况时——这些场景背后都有一个共同的技术支撑&…...

告别复杂状态机:用C语言结构体数组为STM32设计可维护的多级菜单

用结构体数组重构STM32菜单系统&#xff1a;从状态机到模块化设计的进阶之路 在嵌入式开发中&#xff0c;菜单系统是许多产品不可或缺的交互界面。传统的状态机或switch-case实现方式虽然直接&#xff0c;但随着功能迭代&#xff0c;代码往往会变得臃肿难维护。我曾接手过一个使…...

除了CAN总线,UDS协议还能跑在哪些车上?手把手带你用Wireshark抓包分析

突破CAN总线限制&#xff1a;UDS协议在多种车载网络中的实战解析 当提到UDS&#xff08;Unified Diagnostic Services&#xff09;诊断协议时&#xff0c;大多数工程师的第一反应是它与CAN总线的紧密关联。确实&#xff0c;在传统汽车电子架构中&#xff0c;UDS over CAN是最常…...

不止于模拟器:在Windows10上用VS2019+QEMU调试EDK2 UEFI应用的完整流程

从零构建UEFI开发环境&#xff1a;VS2019与QEMU深度整合实战指南 在当今固件开发领域&#xff0c;UEFI已逐步取代传统BIOS成为主流标准。对于开发者而言&#xff0c;搭建一个高效的UEFI开发环境是进行底层系统开发的第一步。本文将带你深入探索如何在Windows10平台上&#xff0…...

Win11下用VMware16安装UOS服务器版全流程(附镜像+序列号)

Win11环境下VMware 16安装UOS服务器版实战指南 在数字化转型浪潮中&#xff0c;国产操作系统正逐步成为企业IT基础设施的新选择。统信UOS作为国内领先的服务器操作系统&#xff0c;凭借其稳定性与安全性&#xff0c;正在金融、政务等领域获得广泛应用。本文将手把手指导Windows…...

高效掌控暗影精灵设备:开源工具OmenSuperHub的四大突破

高效掌控暗影精灵设备&#xff1a;开源工具OmenSuperHub的四大突破 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 告别原厂软件臃肿困扰&#xff0c;体验纯净硬件控制新方式 OmenSuperHub是一款专为惠普暗影精灵笔记本打造…...

如何用tiny11builder打造轻量Windows 11系统:绕过硬件限制的完整指南

如何用tiny11builder打造轻量Windows 11系统&#xff1a;绕过硬件限制的完整指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 老旧电脑无法流畅运行Windows 11…...

卷积神经网络文本分类终极指南:3,4,5多尺寸滤波器配置详解

卷积神经网络文本分类终极指南&#xff1a;3,4,5多尺寸滤波器配置详解 【免费下载链接】cnn-text-classification-tf Convolutional Neural Network for Text Classification in Tensorflow 项目地址: https://gitcode.com/gh_mirrors/cn/cnn-text-classification-tf 在…...

破解微信小程序video组件的限制:3种禁止拖动进度条的实战方案对比

微信小程序视频播放控制深度解析&#xff1a;3种禁止拖动进度条的工程化方案 在知识付费和在线教育类小程序中&#xff0c;视频内容的完整播放率直接影响知识传递效果。但微信小程序原生video组件的enable-progress-gesture属性仅能禁用触摸手势&#xff0c;无法真正阻止进度条…...

2003 - MySQL连接localhost失败(10061错误)的全面排查指南

1. 为什么会出现MySQL连接localhost失败&#xff08;10061错误&#xff09;&#xff1f; 当你兴致勃勃地打开数据库客户端准备大干一场时&#xff0c;突然蹦出个"2003 - Cant connect to MySQL server on localhost(10061)"的错误提示&#xff0c;是不是瞬间就懵了&a…...