力扣刷题第二十九天--二叉树

前言

问问自己,刷题的效果真的达到了吗?

内容

一、翻转二叉树

226.翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

递归
func invertTree(root *TreeNode) *TreeNode {if root==nil{return root}root.Left,root.Right=root.Right,root.LeftinvertTree(root.Left)invertTree(root.Right)return root
}
二、对称二叉树

101.对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。

递归

我们可以实现这样一个递归函数,通过「同步移动」两个指针的方法来遍历这棵树,p 指针和 q 指针一开始都指向这棵树的根,随后 p 右移时,q 左移,p 左移时,q 右移。每次检查当前 p 和 q 节点的值是否相等,如果相等再判断左右子树是否对称。

func isSymmetric(root *TreeNode) bool {return  dfs(root.Left,root.Right)}func dfs(left *TreeNode,right *TreeNode) bool{if left==nil&&right==nil{return true}if left==nil||right==nil{return false}if left.Val!=right.Val{return false}return dfs(left.Left,right.Right)&&dfs(left.Right,right.Left)
}
迭代 

把递归程序改写成迭代程序

func isSymmetric(root *TreeNode)bool{u,v:=root,rootqueue:=[]*TreeNode{}queue=append(queue,u)queue=append(queue,v)for len(queue)>0{u,v = queue[0],queue[1]queue=queue[2:]if u==nil&&v==nil{//要先判断continue}if u==nil||v==nil{return false}if u.Val!=v.Val{return false}queue=append(queue,u.Left)queue=append(queue,v.Right)queue=append(queue,u.Right)queue=append(queue,v.Left)}return true
}
三、完全二叉树的节点个数

222.完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

广度优先搜素
func countNodes(root *TreeNode) int {var count intif root==nil{//没有这个会报错 昨天遇到过return 0}level:=[]*TreeNode{root}for len(level)>0{temp:=levellevel=nilfor _,node:=range temp{count++if node.Left!=nil{level=append(level,node.Left)}if node.Right!=nil{level=append(level,node.Right)}}}return count
}

最后

令人心动的offer啊,能拿到吗?

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

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

相关文章

Vue中的$nextTick的作用

在 Vue 中,当某些数据发生变化时,DOM 并不会立即更新。相反,Vue 会在下一个事件循环周期(microtask)中异步执行更新,这样可以避免频繁的 DOM 操作。然而,有时候我们需要在 DOM 更新后执行一些操…

2024-NeuDS-数据库题目集

一.判断题 1.在数据库中产生数据不一致的根本原因是冗余。T 解析:数据冗余是数据库中产生数据不一致的根本原因,因为当同一数据存储在多个位置时,如果其中一个位置的数据被修改,其他位置的数据就不一致了。因此,在数据…

11.docker的网络-docker0的理解及bridge网桥模式的介绍与实例

1.docker0的基本理解 安装完docker服务后,我们首先查看一下宿主机的网络配置 ifconfig我们可以看到,docker服务会默认在宿主机上创建一个虚拟网桥docker0,该网桥网络的名字称为docker0。它在内核层连通了其他物理或者虚拟网卡,这…

ubuntu22.04系统下载程序和依赖,并拷贝到指定路径下

脚本1 apt install aptitude apt-get -d install xxx #xxx是待下载的安装包 mv /var/cache/apt/archives/* /home/tuners/1apt install aptitude apt-get -d install xxx mv /var/cache/apt/archives/*.deb /home/tuners/1 xxx 为程序包名称 /home/tuners/1为保存程序包的…

从零开始的搭建指南:开发高效的抖音预约服务小程序

预约服务小程序提高了效率,节省了用户时间。下文,小编将与大家一同探讨如何从零开始打造预约服务小程序。 第一步:明确需求和目标 确定你的小程序主要服务领域是什么?是医疗预约、美容美发、餐厅预订还是其他行业?明…

Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!

Django Rest Framework(DRF)是构建强大且灵活的Web API的优秀工具。它基于Django,提供了一套用于构建Web API的组件和工具,简化了API开发过程,同时保留了Django的优雅和强大。 一、Web应用模式 在开发Web应用时&…

Android组件化搭建学习

什么是组件化? 为什么要用组件化?在项目的开发过程中,随着开发人员的增多及功能的增加,如果提前没有使用合理的开发架构,那么代码会越来臃肿,功能间代码耦合也会越来越严重,这时候为了保证项目…

C# 忽略大小写

在 C# 中,你可以通过以下几种方式来忽略大小写: 使用 ToLower 或 ToUpper 方法将字符串转换为全小写或全大写,然后进行比较。使用 Compare 或 CompareOrdinal 方法,并传入正确的 StringComparer 实例以指示比较应该忽略大小写。使…

Android 开发Java调用Kotlin提示包不存在

在kotlin代码所在module的build.gradle设置 plugins {id org.jetbrains.kotlin.android }

Unity中Shader的Standard材质解析(一)

文章目录 前言一、在Unity中,按一下步骤准备1、在资源管理面板创建一个 Standard Surface Shader2、因为Standard Surface Shader有很多缺点,所以我们把他转化为顶点片元着色器3、整理只保留主平行光的Shader效果4、精简后的最终代码 前言 在Unity中&am…

基于Springboot+Vue选课系统

选课系统要求 (1)数据库表:教师信息表、学生信息表、课程表、选课表 其中,教师信息表、学生信息表和选课表的数据需要提前设置,本题主要操作课程表 (2) 技术架构: 后台使用springboot 前端使用vue-admin-template (3) 考试时间&…

鸿蒙(HarmonyOS)应用开发——安装DevEco Studio安装

前言 HarmonyOS华为开发的操作系统,旨在为多种设备提供统一的体验。它采用了分布式架构,可以在多个设备上同时运行,提供更加流畅的连接和互动。HarmonyOS的目标是提供更高的安全性、更高效、响应更快的用户体验,并通过跨设备功能…

Vue3 响应式数据 reactive使用

ref 与 reactive 是 vue3 提供给我们用于创建响应式数据的两个方法。 reactive 常用于创建引用数据,例如:object、array 等。 reactive 则是通过 proxy 来实现的响应式数据,并配合 reflect 操作的源对象。 reactive 创建引用数据&#xff1…

【实战精选】掌握图像风格迁移:构建基于生成对抗网络的系统

1.研究背景与意义 随着计算机技术的不断发展,图像处理和计算机视觉领域取得了长足的进步。图像风格迁移是其中一个备受关注的研究方向,它可以将一幅图像的风格特征应用到另一幅图像上,从而创造出新的图像。这项技术具有广泛的应用前景&#…

lazada商品详情数据接口(lazada.item_get)

Lazada商品详情数据接口是Lazada电商平台提供的一个API接口,用于获取商品详细信息。通过这个接口,开发者可以获取Lazada平台上商品的丰富信息,包括商品名称、价格、库存、描述、图片等。这个接口使用RESTful风格,并通过HTTP协议进…

经过了多少轮洗牌后,序列中间位置的牌面为9 ← random.shuffle()

【题目描述】 有牌面为1~9的扑克牌,现在进行洗牌,并存于一个序列中。 请输出经过了多少轮洗牌后,序列中间位置的牌面为9。【算法分析】 Python 中使用 random 模块中的 shuffle 函数,可随意排列列表中的元素。 本题中的输出&#…

【基础知识】AB软件RSLinx的版本说明

哈喽,大家好,我是雷工! 之前对AB的软件了解比较少,在工作中未接触过,最近一次现场勘察时,有很多中控系统都是AB的,借此机会对AB软件有了些许了解。 一、RSLinx是什么软件? RSLinx是…

fork介绍,返回值问题,写时拷贝,进程切换,子进程开始执行的位置,子进程的用途

目录 fork 介绍 fork的返回值问题 介绍 fork()时,系统要做什么 数据是否要独立 如果共享的话,就会出现问题! 写时拷贝 引入 介绍 举例(fork返回值) fork返回的值是什么 创建失败的原因 子进程执行位置从哪里开始 引入 进程切换 子进程执行的位置 子进程的…

烫伤事件屡有发生,觅光推脱责任,称是用户操作失误

提及“双十一”“直播间”等关键词,人们常常将其与“低价”“薅羊毛”等字眼挂钩。而在近日,科技美容品牌AMIRO觅光(下称“觅光”)却上演了一出“反向薅羊毛”的戏码,因线上线下渠道相差超千元的价格差饱受争议。 自横…

camera-caps:Jetson设备上的一种实用的V4L2可视化界面

camera-caps:Jetson设备上的一种实用的V4L2可视化界面 github地址是: https://github.com/jetsonhacks/camera-caps 注意:Jetpack5.x需要选择tag 5.x版本