【每日练习】二叉树

⭐ 作者:小胡_不糊涂
🌱 作者主页:小胡_不糊涂的个人主页
📀 收录专栏:二叉树
💖 持续更文,关注博主少走弯路,谢谢大家支持 💖

文章目录

  • 一、100. 相同的树
    • 1. 题目简介
    • 2. 代码
    • 3. 运行结果
  • 二、572. 另一棵树的子树
    • 1. 题目简介
    • 2. 代码
    • 3. 运行结果
  • 三、226. 翻转二叉树
    • 1. 题目简介
    • 2. 代码
    • 3. 运行结果
  • 四、110平衡二叉树
    • 1.题目介绍
    • 2. 代码
    • 3. 运行结果

一、100. 相同的树

1. 题目简介

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
在这里插入图片描述

2. 代码

class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if(p==null&&q==null){return true;//都为空}else if(p==null || q==null){return false;//一个为空}else if(p.val!=q.val){return false;//根节点是否相同}else{return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);//比较左右节点是否相同}}
}

3. 运行结果

在这里插入图片描述

二、572. 另一棵树的子树

1. 题目简介

给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。
二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。

2. 代码

class Solution {public boolean isSubtree(TreeNode r, TreeNode s) {if(s==null) return true;if(r==null) return false;return isSubtree(r.left,s)||isSubtree(r.right,s)||isSameTree(r,s);}public boolean isSameTree(TreeNode p,TreeNode q){if(p==null&&q==null){return true;}else if(p==null || q==null){return false;}else if(p.val!=q.val){return false;}else{return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);}}
}

3. 运行结果

在这里插入图片描述

三、226. 翻转二叉树

1. 题目简介

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点
在这里插入图片描述

2. 代码

class Solution {//翻转二叉树public TreeNode invertTree(TreeNode root) {if(root==null){return null;}TreeNode tmp=root.left;root.left=root.right;root.right=tmp;invertTree(root.left);invertTree(root.right);return root;}
}

3. 运行结果

在这里插入图片描述

四、110平衡二叉树

1.题目介绍

给定一个二叉树,判断它是否是 平衡二叉树(平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1)
在这里插入图片描述

2. 代码

class Solution {//平衡二叉树public boolean isBalanced(TreeNode root) {if(root==null){return true;}else{return Math.abs(height(root.left)-height(root.right))<=1&&isBalanced(root.left)&&isBalanced(root.right);}}public int height(TreeNode r){if(r==null){return 0;}else{return Math.max(height(r.left),height(r.right))+1;}}
}

3. 运行结果

在这里插入图片描述


来源:力扣(LeetCode),著作归力扣网络所有。
如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

问题汇总

一、TCP的粘包和拆包问题&#xff1f; TCP在发送和接受数据的时候&#xff0c;有一个滑动窗口来控制接受数据的大小&#xff0c;这个滑动窗口你就可以理解为一个缓冲区的大小。缓冲区满了就会把数据发送&#xff0c;数据包的大小是不固定的&#xff0c;有时候比缓冲区大有时候…

python学习面向对象之组合的那些事儿

先上概念&#xff1a; 组合是通过将不同的类或模块组合在一起&#xff0c;创建一个新的类来实现的机制。这意味着一个类的对象可以包含其他类的对象作为其部分&#xff0c;通过组合这些部分来实现整体的功能。 交通工具的烦恼 话说时间到3030年了&#xff0c;风陵苑交通协会…

NIST再次强调:2024-2030年,必须升级至抗量子算法

4月10日至12日&#xff0c;美国国家标准与技术研究院&#xff08;NIST&#xff09;在马里兰州罗克维尔举办第五届NIST PQC&#xff08;后量子密码学&#xff09;标准化会议&#xff0c;该会议的目的是对PQC算法进行全面讨论&#xff08;包括已选定和正在评估的算法&#xff09;…

如何处理ubuntu22.04LTS安装过程中出现“Daemons using outdated libraries”提示

Ubuntu 22.04 LTS 中使用命令行升级软件或安装任何新软件时&#xff0c;您可能收到“Daemons using outdated libraries”&#xff0c;“Which services should be restarted?”的提示&#xff0c;提示下面列出备选的重启服务&#xff0c;如下。 使用以下命令&#xff0c;能够…

LangChain - 文档加载

文章目录 一、关于 检索二、文档加载器入门指南 三、CSV1、使用每个文档一行的 CSV 数据加载 CSVLoader2、自定义 csv 解析和加载 &#xff08;csv_args3、指定用于 标识文档来源的 列&#xff08;source_column 四、文件目录 file_directory1、加载文件目录数据&#xff08;Di…

day05-java面向对象(上)

5.1 面向对象编程 5.1.1 类和对象 1、什么是类 类是一类具有相同特性的事物的抽象描述&#xff0c;是一组相关属性和行为的集合。 属性&#xff1a;就是该事物的状态信息。 行为&#xff1a;就是在你这个程序中&#xff0c;该状态信息要做什么操作&#xff0c;或者基于事物…

Go操作Kafka之kafka-go

Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;本文介绍了如何使用kafka-go这个库实现Go语言与kafka的交互。 Go社区中目前有三个比较常用的kafka客户端库 , 它们各有特点。 首先是IBM/sarama&#xff08;这个库已经由Shopify转给了IBM&#xff09;&#xff0c;之…

Triton Server Python 后端优化

接上文 不使用 Docker 构建 Triton 服务器并在 Google Colab 平台上部署 HuggingFace 模型 MultiGPU && Multi Instance Config 追加 instance_group [{count: 4kind: KIND_GPUgpus: [ 0, 1 ]} ]Python Backend Triton 会根据配置信息启动四个实例&#xff0c;…

物联网数据服务平台

随着物联网技术的迅猛发展&#xff0c;海量数据的产生和应用成为推动工业数字化转型的核心动力。在这个数据为王的时代&#xff0c;如何高效地收集、处理、分析并应用这些数据&#xff0c;成为了企业关注的焦点。物联网数据服务平台应运而生&#xff0c;为企业提供了全面、高效…

CLR学习

视频链接&#xff1a;《CLR十分钟》系列之CLR运行模型_哔哩哔哩_bilibili 什么是 CLR 公共语言运行时&#xff08;Common Language Runtime CLR&#xff09; 是一个可有多种编程语言使用的 运行时&#xff0c;CLR 的核心功能&#xff08;比如 内存管理&#xff0c;程序集加载…

Rust 练手小项目:猜数游戏

好久没写 Rust 了&#xff0c;参考《Rust 程序设计语言》写了一下猜数游戏。差不多 40 行&#xff0c;感觉写起来真舒服。 use rand::Rng; use std::{cmp::Ordering, io};fn main() {let secret_number rand::thread_rng().gen_range(0..100);println!("[*] Guess the n…

耐受强酸碱PFA试剂瓶高纯实验级进口聚四氟乙烯材质取样瓶

PFA取样瓶作为实验室中常备器皿耗材之一&#xff0c;主要用来盛放、储存和运输样品&#xff0c;根据使用条件不同&#xff0c;也可叫特氟龙试剂瓶、样品瓶、储样瓶、广口瓶、进样瓶等。广泛应用于半导体、新材料、多晶硅、硅材、微电子等行业。近年来随着新兴行业的快速发展&am…

methods 中配置的函数,不要用箭头函数?

在 Vue.js 中&#xff0c;确实不建议在 methods 中使用箭头函数。这是因为箭头函数在定义时会捕获其上下文的 this 值&#xff0c;并且不会重新绑定 this&#xff0c;而是继承自外部作用域的 this 值。这种行为与普通函数有所不同。 在 Vue 组件中&#xff0c;methods 中的函数…

【ARM 裸机】开发环境搭建

1、Ubuntu 和 Windows 文件互传 使用过程中&#xff0c;要频繁进行 Ubuntu 和 Windows 的文件互传&#xff0c;需要使用 FTP 服务&#xff1b; 1.1、开启 Ubuntu 下的 FTP 服务 //安装 FTP 服务 sudo apt-get install vsftpd //修改配置文件 sudo vi /etc/vsftpd.conf//重启…

XML(Extensible Markup Language 可扩展标记语言)

1、什么是XML XML 可扩展&#xff08;标签是自定义的&#xff09;标记语言&#xff0c;是一种用于编码文档的标记语言。广泛用于数据的存储和传输&#xff0c;如在配置文件中存储数据、在网络中传输。特别是当数据需要在不同的应用程序或系统之间进行交换时&#xff0c;XML 是…

某想主站的短信轰炸漏洞

很难想象主站居然还有这漏洞 某天的一个晚上&#xff0c;默默的打开了电脑&#xff0c;娴熟的打开了Burp suite, 看到一个很熟悉的注册登录页面&#xff0c;开始测试。 很难想象&#xff0c;还有验证码时效性&#xff0c;于是怼了半刻钟&#xff0c;终于让我逮到了他的数据包…

map.queryRenderedFeatures

map.queryRenderedFeatures是一个在地图库Mapbox GL JS中使用的方法&#xff0c;它用于查询在地图上渲染的特定要素。这个方法通常与地理空间查询一起使用&#xff0c;以找出在地图上的特定点、区域或者是其他的地理要素。 以下是一些使用map.queryRenderedFeatures的示例&…

TechTool Pro for Mac v19.0.3中文激活版 硬件监测和系统维护工具

TechTool Pro for Mac是一款专为Mac用户设计的强大系统维护和故障排除工具。它凭借全面的功能、高效的性能以及友好的操作界面&#xff0c;赢得了广大用户的信赖和好评。 软件下载&#xff1a;TechTool Pro for Mac v19.0.3中文激活版 作为一款专业的磁盘和系统维护工具&#x…

IDEA 设置类注释模板作者、日期、描述等信息(推荐标准!)

idea注释模版配置 idea作为越来越多程序员使用的开发工具&#xff0c;平时的代码注释也非常的关键&#xff0c;类上注释和方法上注释每次换电脑或者新同事入职都要统一修改&#xff0c;找了网上好多教程都写的乱七八糟的啥都有&#xff0c;为方便统一就自己写一个操作方法&…

开发过程中容易忽略的点之服务改造类

1.前言 本文主要介绍服务改造的三个方面&#xff1a;数据库、服务器、中间件 2.场景举例 某系统改造需要替换数据库&#xff0c;未关注字符集细节点差异&#xff0c;上线后数据库部分数据出现乱码问题。某系统报表SQL查询使用不常用TO_NCHAR&#xff0c;开发测试环境均正常&…