HOT100--Day15--98. 验证二叉搜索树,230. 二叉搜索树中第 K 小的元素,199. 二叉树的右视图

HOT100–Day15–98. 验证二叉搜索树,230. 二叉搜索树中第 K 小的元素,199. 二叉树的右视图

每日刷题系列。今天的题目是《力扣HOT100》题单。

题目类型:二叉树。

关键:要深刻理解《递归》

98. 验证二叉搜索树

思路:

看到二叉搜索树一定要想起“中序遍历”

利用一个pre变量,记录前驱节点。

中序遍历一次,就相当于遍历了一个单调数组。

class Solution {// 前驱节点private long pre = Long.MIN_VALUE;public boolean isValidBST(TreeNode root) {if (root == null) {return true;}// 左if (!isValidBST(root.left)) {return false;}// 中(本节点)// 如果违反单调性,向上返回falseif (root.val <= pre) {return false;}// 更新前驱节点pre = root.val;// 右if (!isValidBST(root.right)) {return false;}return true;}
}

230. 二叉搜索树中第 K 小的元素

思路:

看到二叉搜索树一定要想起“中序遍历”。

中序遍历,相当于用for遍历了一个有序数组。返回数组中索引为k的元素。

class Solution {private int index = 0;private int k;private int target;public int kthSmallest(TreeNode root, int k) {this.k = k;midorder(root);return target;}// 中序遍历,相当于用for遍历了一个有序数组。返回数组中索引为k的元素。private void midorder(TreeNode node) {// 多写一个index>=k,可以提前return,剪枝if (node == null || index >= k) {return;}if (node.left != null) {midorder(node.left);}// 中if (++index == k) {target = node.val;return;}if (node.right != null) {midorder(node.right);}}
}

199. 二叉树的右视图

思路:

先递归到右子树,进入新depth的第一个节点就会是最右边的

class Solution {List<Integer> res = new ArrayList<>();public List<Integer> rightSideView(TreeNode root) {dfs(root, 1);return res;}private void dfs(TreeNode node, int depth) {if (node == null) {return;}// 记录进入这个深度的第一个节点if (depth > res.size()) {res.add(node.val);}// 先递归到右子树,进入新depth的第一个节点就会是最右边的dfs(node.right, depth + 1);dfs(node.left, depth + 1);}}

思路:

也可以用层序遍历解决这道题。迭代法。

//  层序遍历,每层的最后一个元素拿出来。
class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> res = new ArrayList<>();if (root == null) {return res;}Deque<TreeNode> que = new ArrayDeque<>();que.offer(root);while (!que.isEmpty()) {int levelCount = que.size();for (int i = 0; i < levelCount; i++) {TreeNode node = que.pop();// 右子树先入队,就是把每层第一个元素拿出来if (node.right != null) {que.offer(node.right);}if (node.left != null) {que.offer(node.left);}// 当i是本层第一个节点的时候,把值加入到res里if (i == 0) {res.add(node.val);}}}return res;}
}

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

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

相关文章

独角数卡对接蓝鲸支付平台实现个人

目录 什么是独角数卡&#xff1f;安装部署教程一、独角数卡安装二、独角数卡支付配置三、独角数卡BUG修复 什么是独角数卡&#xff1f; ‌ ‌ ‌ ‌ ‌ ‌ ‌ 独角数卡(Dujiaoka)‌是一款基于Laravel框架开发的开源式站长自动化售货解决方案&#xff0c;主要用于虚拟商品和数字…

人工智能常见分类

人工智能的分类方式多样&#xff0c;以下是一些常见的分类方法及具体类型&#xff1a; 一、按功能目标分类 弱人工智能&#xff08;ANI&#xff0c;Narrow AI&#xff09;&#xff1a;专注于单一任务&#xff0c;无自主意识&#xff0c;如图像识别&#xff08;人脸解锁&#xf…

PO BAPI bapi_po_create1

当执行BAPI时,需要导入增强字段,其中增强字段包含数值型号字段时,需要增强BADI::ME_BAPI_PO_CUST 代码如下: 记录一下,下次自己继续用 bapi处: ls_te_item-po_item = lv_item.ls_te_item-zz001 = 11.ls_te_item-zz005 = 22.ls_te_item-zz008 = 33.ls_te_item-zz009 = 44…

栈欺骗技术的作用是什么?

好的&#xff0c;我们来详细解释一下“栈欺骗技术”&#xff08;Stack Spoofing&#xff09;的作用。简单来说&#xff0c;栈欺骗技术的核心作用是隐藏程序&#xff08;尤其是恶意软件或安全工具&#xff09;的真实调用链&#xff0c;使其逃避基于栈回溯&#xff08;Stack Walk…

Nano-banana 模型对接教程:最懂创作者的 AI 模型,比GPT-4o还强!

Nano-banana 模型对接教程&#xff08;含 BaseURL&#xff09; Nano Banana 是谷歌推出的革命性 AI 图像编辑模型&#xff0c;代表了从"AI绘画工具"到"AI创意伙伴"的范式转移。它不再是被动执行指令&#xff0c;而是能深刻理解已有图像的上下文、光影、物…

CEEMDAN-PSO-CNN-GRU 锂电池健康状态预测matlab

代码说明 这个实现包含以下主要组成部分: 数据准备:加载并预处理锂电池容量数据,划分训练集和测试集 CEEMDAN分解:将原始信号分解为多个本征模态函数(IMF)和一个残差项 PSO优化:使用粒子群算法优化CNN-GRU网络的超参数 CNN-GRU模型:构建并训练卷积神经网络与门控循环…

MySQL 主从读写分离架构

我们首先来详细、清晰地讲解 MySQL 主从读写分离架构&#xff0c;然后逐一解答你提出的以及补充的高频面试问题。第一部分&#xff1a;MySQL 主从读写分离架构详解1. 什么是主从复制与读写分离&#xff1f;你可以把它想象成一个 “团队作战” 的模式。主数据库 (Master)&#x…

HTML 中的 CSS 使用说明

CSS 使用说明 1. CSS 概述 CSS (Cascading Style Sheets) 是一种用于描述 HTML 或 XML&#xff08;包括如 SVG、MathML 等 XML 方言&#xff09;文档呈现的样式表语言。CSS 描述了元素应该如何在屏幕、纸张或其他媒体上显示。 2. CSS 的基本语法 CSS 规则由两个主要部分组成…

gitlab推送失败,内存不足的处理

git提交时报错&#xff1a; 2025-09-03 20:03:32.583 [info] > git push origin master:master [4866ms]2025-09-03 20:03:32.583 [info] fatal: Out of memory, malloc failed (tried to allocate 1048576000 bytes)看了下服务器内存&#xff0c;空余的只有几百M了。 用hto…

【FastDDS】Discovery ( 05-Discovery Server Settings)

发现服务器设置 这种机制基于客户端-服务器发现模式,即元流量(域参与者之间用于识别彼此的消息交换)由一个或多个服务器域参与者管理(左图),而在简单发现(右图)中,元流量通过IP多播协议等消息广播机制进行交换。有一款发现服务器工具可简化发现服务器的设置和测试。 …

Xilinx ZYNQ 开发环境中搭建Qt环境

在 Xilinx ZYNQ 开发环境中搭建 Qt 环境,意味着你要开发运行在 ZYNQ 嵌入式 Linux 系统上的 GUI 应用程序。这比在 PC 上搭建 Qt 要复杂一些,因为它涉及交叉编译:在你的 PC(主机)上编译出能在 ZYNQ 芯片(目标机)的 ARM Cortex-A9 核心上运行的程序。 整个过程可以分为以…

【数学建模】用代码搞定无人机烟幕:怎么挡导弹最久?

前言&#xff1a;欢迎各位光临本博客&#xff0c;这里小编带你直接手撕**&#xff0c;文章并不复杂&#xff0c;愿诸君耐其心性&#xff0c;忘却杂尘&#xff0c;道有所长&#xff01;&#xff01;&#xff01;&#xff01; **&#x1f525;个人主页&#xff1a;IF’Maxue-CSDN…

linux Kbuild详解关于fixdep、Q、quiet、escsq

linux Kbuild详解关于if_changed_rule的any-prereq和arg-check原理及info调试关于fixdep没有展开&#xff0c;这里说下。 文章目录1. escsq2. Q、quiet2. 1 make V(0、1、2&#xff09;2. 2 make V(0、1)来控制Q、quiet3. fixdep3. 1 fixdep是什么3. 2 fixdep为什么3.2.1 .conf…

notepad++ 正则表达式

在 Notepad 中&#xff0c;正则表达式&#xff08;Regular Expressions, Regex&#xff09; 是一个强大的搜索和替换工具&#xff0c;可以高效地处理文本。以下是 Notepad 正则表达式 的指南&#xff1a;1. 如何在 Notepad 中使用正则表达式打开搜索窗口&#xff1a;快捷键 Ctr…

MySQL Cluster核心优缺点

MySQL Cluster 是 MySQL 官方提供的 分布式、内存优先、高可用 的数据库解决方案&#xff08;基于 NDB 存储引擎&#xff09;。它采用 Share-Nothing 架构&#xff0c;数据自动分片&#xff08;Sharding&#xff09;并分布在多个节点上&#xff0c;适用于需要极高可用性和实时性…

训练+评估流程

训练评估流程1、要求2、训练评估&#xff08;PyTorch TensorBoard &#xff09;完整代码&#xff08;单文件示例&#xff09;运行方法功能对应表3、pytorch自定义评估要继承哪个类&#xff1f;4、HF Trainer和SB35、 汇总1. PyTorch Lightning TensorBoard ModelCheckpoint …

【开题答辩全过程】以 基于Android的点餐系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

【音视频】Http-FLV 介绍

一、Http-FLV 原理 HTTP-FLV 是基于 HTTP 协议的 FLV&#xff08;Flash Video&#xff09;流媒体传输方式。它使用 HTTP 协议而不是传统的 RTMP 协议来传输 FLV 格式的视频流。HTTP-FLV 在 Web 视频直播场景中得到了广泛应用&#xff0c;尤其是在不支持或不希望使用 RTMP 协议的…

uniapp vue页面传参到webview.nvue页面的html或者另一vue中

在app内部使用 uni.$emit(collectiones, { data: gx });传到webview.nvue页面 在webview.nvue页面接受 uni.$on(collectiones, (data) > {console.log(接收到的数据:, data.data);});使用evalJS方法 nvue webview通信示例 这块使用receiveMessageFromNvue方法这样传入的 u…

美团大模型“龙猫”登场,能否重塑本地生活新战局?

美团大模型“龙猫”登场&#xff0c;能否重塑本地生活新战局&#xff1f; 美团大模型登场&#xff1a;行业投下重磅炸弹 在大模型技术迅猛发展的当下&#xff0c;每一次新模型的发布都如投入湖面的石子&#xff0c;激起层层涟漪。美团推出的龙猫大模型 LongCat-Flash&#xff0…