力扣hot100二刷——二叉树

第二次刷题不在idea写代码,而是直接在leetcode网站上写,“逼”自己掌握常用的函数。

标志掌握程度解释办法
Fully 完全掌握看到题目就有思路,编程也很流利
⭐⭐Basically 基本掌握需要稍作思考,或者看到提示方法后能解答
⭐⭐⭐Slightly 稍微掌握需要看之前写过的代码才能想起怎么做多做
⭐⭐⭐⭐absolutely no 完全没有掌握需要看题解才知道怎么做
⭐⭐⭐⭐⭐有难度的高频题需要看题解才知道怎么做,而且过几天就忘了这道题怎么做了背背
36⭐⭐⭐Easy二叉树94/二叉树的中序遍历左-中-右 递归法,当节点不为空时 将节点的左子树传入传入递归函数 添加当前节点到list 将节点的右子树传入传入递归函数 迭代法,维护一个栈,当栈不为空 或 节点不为空时 先遍历左子树,遍历过程中将节点入栈 遍历到空节点后,栈顶元素出栈,再遍历右子树Deque stack = new ArrayDeque<>();
37⭐⭐⭐Easy二叉树104/二叉树的最大深度递归法,遇到空节点返回0 将节点的左子树传入传入递归函数,并将返回值 +1 将节点的右子树传入传入递归函数,并将返回值 +1 返回两者中较大者 return Math.max(maxDepth(root.left) + 1, maxDepth(root.right) + 1);
38⭐⭐⭐Easy二叉树226/反转二叉树递归法,遇到空节点直接返回 交换当前节点的左右子树 将节点的左子树传入传入递归函数 将节点的右子树传入传入递归函数
39⭐⭐⭐Easy二叉树101/对称二叉树递归法,递归函数的输入分别为左子树的节点和右子树的节点 两节点均为空,return true 一节点为空,另一节点不为空,return false 两节点均不为空,但值不同,return false 两节点均不为空,值相同,比较left.left 和 right.right,left.right 和 right.left,返回两个结果的与
40⭐⭐⭐Easy二叉树543/二叉树的直径递归法, 分别计算当前节点的左右子树的深度 更新目前深度最大值ans:左子树深度+右子树深度 和 ans 比较 返回的是左子树深度 和 右子树深度的较大者,而不是当目前深度的最大值
41★★★★Medium二叉树102/二叉树的层序遍历关键在于:找到一个可以标志某层节点的变量,要么是层数,要么是某层的节点个数 层数递归法,递归函数的输入参数:1.当前节点 2.当前层数 当前节点为空,直接返回 层数++ 如果当前ansList的长度 < 当前层数,说明是第一次遍历到该层,要创建一个itemList加入到 list 将当前节点加入到 ansList中 对应层数位置 的itemList中 将当前节点的左子树传入传入递归函数 将当前节点的右子树传入传入递归函数 队列迭代法,维护一个队列来遍历每层元素 首先将root根节点存入队列 开始遍历二叉树,队列为空则跳出循环 维护length记录该层的节点个数 如果当前length > 0,则移除队头节点,将节点值加入到 item 集合中,并移入该节点的左右子节点(如果不为空的话),并且length-- length == 0 则将item 加入list
42★★★★Easy二叉树108/将有序数组转换为二叉搜索树递归法,核心思想:不断分割数组,数组中间位置的值一定最适合作为当前的根节点 递归参数:数组、左边界、右边界 当左边界 ≤ 右边界时,求中间索引,把数组中间索引的值作为新的节点 令节点的左右子节点 分别 为下一轮递归返回的节点 返回当前节点 如果 左边界 > 右边界,直接返回空节点。
43★★★★Medium二叉树98/验证二叉搜索树递归法,验证二叉搜索树就是看这棵树的中序遍历的序列是否是严格递增的。 维护一个pre节点来保存上一个节点,用来和当前节点比较,初始设为null,当pre != null时再比较 当前节点为空时直接返回true 将节点的左子节点传入传入递归函数 比较当前节点和上个节点的大小,当前节点 ≤ 上个节点则return fasle 节点的右子节点传入传入递归函数 返回左子树和右子树验证结果的与操作
44Medium二叉树230/二叉搜索树中第k小的元素和上题的思路是一样的,二叉搜索树的中序遍历是严格递增的,中序遍历二叉树的第k个节点即为要找的答案 巧妙定义类变量,即可用一句话找到结果 if(–k == 0) ans = root.val;
45Medium二叉树199/二叉树的右视图层数递归法: 层数从0开始 右中左递归遍历二叉树,List<List> list 维护一个集合来存放每一层的值 递归结束后,统计每层的第一个元素的集合即为答案
46⭐⭐⭐Medium二叉树114/二叉树展开为链表反先序递归遍历:右 左 中 反先序递归遍历二叉树,从最后往最前依次完成链表 每次遍历,要更新nextNode,也就是下一个节点
47★★★★Medium二叉树105/从前序与中序遍历序列构造二叉树递归遍历,3个递归参数为preorder中当前头结点的索引、inorder中当前子树的左右边界索引 由前序遍历得到头节点,在inorder中搜索头节点,为了方便搜索,维护一个map来存放inorder的值和对应的索引 根据inorder中的头节点,将inorder划分为左右子树,并将左右子树的边界分别传入递归函数 要注意右子树的递归函数略微复杂: node.right = buildTree1(root + mid - left + 1, mid + 1, right);
48⭐⭐⭐Medium二叉树437/路经总和III前序遍历+前缀和 注意,sum和map中的键都应该是long型。 由根节点从上至下前序遍历并更新sum,每次遍历先检查map中是否包含sum - target并更新ans 将当前和在map中的次数更新 将当前节点的左子节点传入递归函数,将当前节点的右子节点传入递归函数 将当前遍历层的sum在map中的次数 - 1 将当前sum 减去 当前节点的值。
49★★★★Medium二叉树236/二叉树的最近公共祖先搞明白一件事情:只要碰到一个节点(不管是p还是q)就返回当前节点,不用再遍历下面的节点了 结束递归的条件:root == null || root == p || root == q 对于当前节点,如果只有一个子树返回值不为空,另一个子树返回值为空,说明另一个节点要么也在该子树下面,他们的共同祖先就是返回的节点;要么在其他节点下,不管怎么样都不用遍历剩下的节点。
50★★Hard二叉树124/二叉树的最大路径和后序遍历 递归结束条件,空节点返回0 当前节点的左子节点和右子节点分别传入递归函数,返回结果分别为左右子树的最大路径和 更新当前最大值 ans = Math.max(ans, leftMax + rightMax + root.val); 返回值:当前节点+左子树最大路径和、当前节点+右子树最大路径和、0 三者中的较大者

图片版:
在这里插入图片描述

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

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

相关文章

网络安全 --- 基于网络安全的 Linux 最敏感目录及文件利用指南

目录 基于网络安全的 Linux 最敏感目录及文件利用指南 Linux 中最敏感的目录及文件 1. /etc 2. /root 3. /var/log 4. /proc 5. /tmp 6. /home 7. /boot 8. /dev 如何利用这些敏感文件 你可能没想到的知识点 总结 Linux 中最敏感的目录及文件 1. /etc 存放内容&a…

深入浅出:Java实现斐波那契数列的七种武器与性能调优指南

​​​ 引言:当数学之美邂逅算法之力 斐波那契数列——这个诞生于13世纪的数学瑰宝,在计算机科学中焕发出新的生命力。作为递归与动态规划的经典案例,它不仅是算法入门的必修课,更是性能优化的试金石。本文将带您深入探索Java实现斐波那契数列的七种核心方法,并揭秘不同…

音视频入门基础:RTP专题(17)——音频的SDP媒体描述

一、引言 在《音视频入门基础&#xff1a;RTP专题&#xff08;3&#xff09;——SDP简介》中对SDP协议进行了简介&#xff0c;以H.264为例介绍了视频的SDP的媒体描述。本文对该文章进行补充&#xff0c;以AAC为例&#xff0c;讲述音频的SDP媒体描述。 二、文档下载 《RFC 364…

MyBatis-Plus防全表更新与删除插件BlockAttackInnerInterceptor

防全表更新与删除插件 BlockAttackInnerInterceptor 是 MyBatis-Plus 框架提供的一个安全插件&#xff0c;专门用于防止恶意的全表更新和删除操作。该插件通过拦截 update 和 delete 语句&#xff0c;确保这些操作不会无意中影响到整个数据表&#xff0c;从而保护数据的完整性…

嵌入式开发之STM32学习笔记day06

基于STM32F103C8T6的开发实践——从入门到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器&#xff0c;广泛应用于嵌入式系统中。STM32F103C8T6是其中非常受欢迎的一款&#xff0c;凭借其强大的性能、丰富的外设接口和低廉的价格…

TCP/IP 协议精讲-精华总结版本

序言 本文旨在介绍一下TCP/IP涉及得所有基础知识&#xff0c;为大家从宏观上俯瞰TCP/IP提供一个基石&#xff0c;文档属于《TCP/IP图解&#xff08;第五版&#xff09;》的精简版本。 专业术语 缩写 全称 WAN Wide area network广域网 LAN Local area network局域网 TC…

Ubuntu22.04虚拟机里安装Yolov8流程

1. 安装pytorch sudo apt install nvidia-cuda-toolkit nvcc --version # 官方适配地址&#xff1a;https://download.pytorch.org/whl/torch/import torch print(torch.__version__) print(torch.cuda.is_available())2. 安装环境 # cuDNN 安装&#xff1a;https://develop…

stm32第五天按键的基础知识

一&#xff1a;按键连接示意图 按键控制LED灯 软件设计流程 初始化系统 o 初始化GPIO外设时钟 o 初始化按键和LED的引脚 • 检测按键输入电平来控制LED灯 o SW2控制灯开 。 SW3控制灯关 1&#xff1a;key.c工程 #include"key.h" #include"stm32f10x.h"v…

Xposed模块开发:运行时修改技术

1. Xposed框架核心原理 1.1 运行时架构解析 Android ART Hook机制&#xff1a; graph TD A[目标APP进程] --> B{系统Zygote} B -->|加载Xposed| C[XposedBridge] C --> D[模块1] C --> E[模块2] D --> F[Hook目标方法] E --> F 1.1.1 核心组件交…

【Python学习笔记】一些关于多线程,xls文件读取,PyQt5,PyInstaller打包等问题的解决方案记录

背景&#xff1a; 最近利用休息时间写了个小型exe程序&#xff0c;主要涉及的技术点有&#xff1a;多线程&#xff0c;读取xls文件&#xff0c;基于PyQt5的简单GUI页面&#xff0c;利用PyInstaller打包成exe。虽然有ChatGPT等协助&#xff0c;但难免还是在开发过程中遇到了一些…

基于javaweb的SpringBoot智能相册管理系统图片相册系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

【AI知识管理系统】(一)AI知识库工具测评

嘿,朋友们!🧐你们有没有想过,咱们平日里那些一闪而过的知识笔记、各种碎片化的idea,记录下来之后都是怎么管理的呀? 还有啊,咱们读过的那些书,大家会不会随手写点东西记录一下呢?📝要知道,如果不写的话,很可能过不了多久就全忘得一干二净啦。 😭那多年前记下的…

JVM并发编程AQSsync锁ReentrantLock线程池ThreadLocal

并发编程2 synchronized锁实现**AQS****ReentrantLock实现****JUC 常用类**池的概念 ThreadLocalThreadLocal原理内存泄露强引用:软引用弱引用虚引用ThreadLocal内存泄露 synchronized锁实现 synchronized是一个关键字,实现同步,还需要我们提供一个同步锁对象,记录锁状态,记录…

C++从入门到入土(八)——多态的原理

目录 前言 多态的原理 动态绑定与静态绑定 虚函数表 小结 前言 在前面的文章中&#xff0c;我们介绍了C三大特性之一的多态&#xff0c;我们主要介绍了多态的构成条件&#xff0c;但是对于多态的原理我们探讨的是不够深入的&#xff0c;下面这这一篇文章&#xff0c;我们将…

自带多个接口,完全免费使用!

做自媒体的小伙伴们&#xff0c;是不是经常为语音转文字的事儿头疼&#xff1f; 今天给大家推荐一款超实用的语音转文字软件——AsrTools&#xff0c;它绝对是你的得力助手&#xff01; AsrTools 免费的语音转文字软件 这款软件特别贴心&#xff0c;完全免费&#xff0c;而且操…

国内首款载重1吨级无人运输机TP1000首飞成功 2026年投入应急救援

大湾区经济网珠海快讯&#xff0c;据央视新闻报道&#xff0c;3月15日上午&#xff0c;国内首款载重1吨级大型无人运输机TP1000在山东成功首飞。该机由中国民航适航标准完全自主研发&#xff0c;起飞重量3.3吨&#xff0c;满载航程达1000公里&#xff0c;具备智能空投功能&…

设计模式Python版 访问者模式

文章目录 前言一、访问者模式二、访问者模式示例 前言 GOF设计模式分三大类&#xff1a; 创建型模式&#xff1a;关注对象的创建过程&#xff0c;包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式&#xff1a;关注类和对象之间的组…

(性能测试)性能测试工具 2.jmeter的环境搭建 3jmeter元件和4使用实例 5jmeter元件和参数化

目录 性能测试工具 性能测试工具 jemeter环境搭建 jmeter的常用目录介绍 jmeter修改语言和主题--jmeter界面的汉化 jmeter元件 jmeter元件和组件的介绍 jmeter的作用域原则 jmeter的执行顺序 案例&#xff1a;执行顺序 jmeter使用案例 jmeter线程组的介绍 jmeter…

书摘 ASP.NET Core技术内幕与项目实战:基于DDD与前后端分离

IT行业的发展瞬息万变,新技术层出不穷,很多技术人员出于个人兴趣、个人职业发展等考虑而选择一些流行的新技术,他们会把各种复杂的架构模式、高精尖的技术都加入架构中,这增加了项目的复杂度、延长了交付周期、增加了项目的研发成本。有些技术并不符合公司的情况,最后项目…

Spring Cloud 负载均衡(Ribbon)- 流量管理与服务调用优化

一、Spring Cloud Ribbon 概述 1、什么是 Spring Cloud Ribbon&#xff1f; Spring Cloud Ribbon 是一个基于客户端的负载均衡器&#xff0c;其核心目标是为微服务架构中的服务调用提供智能流量分发能力。与传统的服务端负载均衡&#xff08;如 Nginx&#xff09;不同&#x…