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

力扣 669. 修剪二叉搜索树

题目来源:https://leetcode.cn/problems/trim-a-binary-search-tree/description/

 

 C++题解1:递归法。当前节点为空时返回空,不为空时对其值进行分类讨论。以low为例,当前节点值等于low时,意味着其左子树都要丢弃,可指向空;大于low时,说明其左子树也可能满足条件,因此对其左子树进一步递归;小于low时,说明当前节点及其左子树都不满足条件,将当前节点更新为其右子节点。

class Solution {
public:TreeNode* trimBST(TreeNode* root, int low, int high) {if(!root) return nullptr;if(root->val == low) root->left = nullptr; else if(root->val > low) {root->left = trimBST(root->left, low, high);}else {root = root->right;return trimBST(root, low, high);}if(root->val == high) root->right = nullptr;else if(root->val < high) {root->right = trimBST(root->right, low, high);}else {root = root->left;return trimBST(root, low, high);}return root;}
};

C++题解2:递归法。大致思路同上,较为精简,来源代码随想录。

class Solution {
public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root == nullptr) return nullptr;if (root->val < low) return trimBST(root->right, low, high);if (root->val > high) return trimBST(root->left, low, high);root->left = trimBST(root->left, low, high);root->right = trimBST(root->right, low, high);return root;}
};

C++题解3:迭代法。见注释,来源代码随想录。

class Solution {
public:TreeNode* trimBST(TreeNode* root, int L, int R) {if (!root) return nullptr;// 处理头结点,让root移动到[L, R] 范围内,注意是左闭右闭while (root != nullptr && (root->val < L || root->val > R)) {if (root->val < L) root = root->right; // 小于L往右走else root = root->left; // 大于R往左走}TreeNode *cur = root;// 此时root已经在[L, R] 范围内,处理左孩子元素小于L的情况while (cur != nullptr) {while (cur->left && cur->left->val < L) {cur->left = cur->left->right;}cur = cur->left;}cur = root;// 此时root已经在[L, R] 范围内,处理右孩子大于R的情况while (cur != nullptr) {while (cur->right && cur->right->val > R) {cur->right = cur->right->left;}cur = cur->right;}return root;}
};

相关文章:

力扣 669. 修剪二叉搜索树

题目来源&#xff1a;https://leetcode.cn/problems/trim-a-binary-search-tree/description/ C题解1&#xff1a;递归法。当前节点为空时返回空&#xff0c;不为空时对其值进行分类讨论。以low为例&#xff0c;当前节点值等于low时&#xff0c;意味着其左子树都要丢弃&#xf…...

ChatGPT在多轮对话中的表现如何?

ChatGPT是一个非常强大的自然语言处理模型&#xff0c;它可以生成高质量的自然语言文本&#xff0c;并且在多轮对话中也有很好的表现。以下是关于ChatGPT在多轮对话中表现的详细介绍&#xff1a; 上下文感知 ChatGPT可以通过上下文感知来理解当前对话的语境和主题。在多轮对话…...

C++ 虚函数 (virtual function) 介绍

文章目录 1. 什么是虚函数2. 虚函数与非虚函数的区别3. 派生类中的虚函数4. 构造/析构函数可以是虚函数吗&#xff1f;5. 纯虚函数5.1 纯虚函数的定义5.1 纯虚函数的特定 1. 什么是虚函数 C 对象有三大特性&#xff1a;继承、封装、多态&#xff1b;虚函数就是实现多态的一种方…...

写给小白的ChatGPT和AI原理

前言 随着ChatGPT等生成式AI的大火&#xff0c;很多开发者都对AI感兴趣。笔者是一名应用层的开发工程师&#xff0c;想必很多类似的开发者都对AI这块不太了解&#xff0c;故而从自己的理解&#xff0c;写一篇給小白的AI入门文章&#xff0c;希望可以帮助到大家。 这是GPT对本…...

多元回归预测 | Matlab基于麻雀算法(SSA)优化混合核极限学习机HKELM回归预测, SSA-HKELM数据回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于麻雀算法(SSA)优化混合核极限学习机HKELM回归预测, SSA-HKELM数据回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 …...

High Performance Visual Tracking with Siamese Region Proposal Network(SiamRPN)

High Performance Visual Tracking with Siamese Region Proposal Network&#xff08;SiamRPN&#xff0c;CVPR2018&#xff09; 主要贡献&#xff1a; 提出了SiamRPN跟踪器&#xff0c;首次将端到端的离线训练方式&#xff0c;应用到了大尺度的图像跟踪任务上在在线跟踪过程…...

【Vue3 生态】VueRouter 路由核心知识点

1. 动态路由 1.1 动态路由匹配 路由分为静态路由和动态路由。上面讲过的类似 ‘/login’ 这样写死的就是静态路由。 动态路由通过在路径中使用一个动态字段&#xff08;简称&#xff1a;路径参数&#xff09;&#xff0c;来将不同的信息映射到同一个组件中。 如&#xff1a…...

SpringCloud-Nacos配置管理

文章目录 Nacos配置管理统一配置管理在nacos中添加配置文件从微服务拉取配置 配置热更新方式一方式二 配置共享1&#xff09;添加一个环境共享配置2&#xff09;在user-service中读取共享配置3&#xff09;运行两个UserApplication&#xff0c;使用不同的profile3&#xff09;运…...

物流智能分拣管理

电子商务的兴起&#xff0c;实体消费和虚拟消费结合的方式加快商品流通速度。计算机硬件和软件结合&#xff0c;改变了现代社会的工作和生活。线上和线下的消费方式这种消费观念新颖&#xff0c;受到很多年轻消费者的青睐。不同的时期有不同的经济运行机制&#xff0c;电子是一…...

Qt编写视频监控系统79-四种界面导航栏的设计

一、前言 最初视频监控系统按照二级菜单的设计思路&#xff0c;顶部标题栏一级菜单&#xff0c;左侧对应二级菜单&#xff0c;最初采用图片在上面&#xff0c;文字在下面的按钮方式展示&#xff0c;随着功能的增加&#xff0c;二级菜单越来越多&#xff0c;如果都是这个图文上…...

界面开发框架Qt新手入门教程:如何使用Calendar组件创建日历(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 本文中的CalendarWi…...

charles unknown 问题和手机代理设置(iOS手机)

一、Charles下载 下载地址&#xff1a;https://www.charlesproxy.com/download/ 二、Charles配置代理 1.查看本机IP&#xff1a;help-->Local IP Address 2.查看或者设置访问端口&#xff1a;Proxy->Proxy Settings 3.设置不代理计算机的请求&#xff08;推荐&#xff0…...

【备战秋招】每日一题:2023.03.26-阿里OD机试(第三题)-数组之和最小值

为了更好的阅读体检&#xff0c;可以查看我的算法学习网站 在线评测链接:P1119 题目内容 塔子哥是一个热爱数学的年轻数学家&#xff0c;他对数字和因子分解有着深入的研究。 有一天&#xff0c;他在一次偶然的探索中发现了一款神奇的游戏&#xff0c;名为“除数游戏”。 在…...

网站的SEO优化:提升搜索引擎可见性的关键步骤

93. 网站的SEO优化&#xff1a;提升搜索引擎可见性的关键步骤 SEO&#xff08;Search Engine Optimization&#xff09;是指通过优化网站的内容、结构、链接和其他因素&#xff0c;以提高网站在搜索引擎结果页面&#xff08;SERP&#xff09;中的排名和可见性的过程。 优化网…...

Spring Boot 中的服务注册是什么,原理,如何使用

Spring Boot 中的服务注册是什么&#xff0c;原理&#xff0c;如何使用 Spring Boot 是一个非常流行的 Java 后端框架&#xff0c;它提供了许多便捷的功能和工具&#xff0c;使得开发者可以更加高效地开发微服务应用。其中&#xff0c;服务注册是 Spring Boot 微服务架构中非常…...

spring.factories文件在Spring工程中的说明

说明 spring.factories 是 Spring Boot 框架中一个特殊的配置文件&#xff0c;它用于定义自动配置的实现类以及要注册的其他组件信息。该文件通常位于 META-INF/spring.factories 目录下&#xff0c;Spring Boot 在启动时会自动加载它并读取其中的配置信息。 spring.factorie…...

常见的自动化测试架构有哪些?

目录 前言 常见的自动化架构包括如下。 1.数据驱动测试 2.模块驱动测试 3.关键字驱动测试 优点&#xff1a; 缺点&#xff1a; 总结&#xff1a; 前言 一个自动化测试架构就是一个集成体系&#xff0c;其中定义了一个特殊软件产品的自动化测试规则。这一体系中包含测试…...

Revit中用自适应创建简单的瓦片族和切换构件的材质?

一、Revit中使用自适应创建瓦片族 在我们的日常生活中&#xff0c;屋顶的瓦片是我们经常都能够见到的&#xff0c;瓦片能够挡风遮雨也能够使建筑物带来古香古色的气息&#xff0c;那我们今天来学习如何使用自适应创建简单的瓦片族。 1.首先&#xff1a;我们打开自适应公制常规模…...

Spring Boot实战:拦截器和监听器的应用指南

当使用Spring Boot时&#xff0c;我们可以通过拦截器&#xff08;Interceptor&#xff09;和监听器&#xff08;Listener&#xff09;来实现对请求和响应的处理。拦截器和监听器提供了一种可插拔的机制&#xff0c;用于在请求处理过程中进行自定义操作&#xff0c;例如记录日志…...

为什么要搭建数据仓库

数据是企业中最重要的资源之一&#xff0c;因此&#xff0c;随着企业数据量的不断增大和复杂度的提高&#xff0c;建立一个可靠和健全的数据仓库变得越来越重要。在数聚股份看来&#xff0c;一个数据仓库可以作为一个企业数据存储和管理系统&#xff0c;能够更有效地存储、管理…...

Obsidian表格处理革新:Excel插件的无缝集成方案

Obsidian表格处理革新&#xff1a;Excel插件的无缝集成方案 【免费下载链接】obsidian-excel 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-excel 在知识管理的日常工作中&#xff0c;你是否经常遇到这样的困境&#xff1a;在Obsidian中记录项目数据时&#…...

MLCC陶瓷电容选型避坑指南:从X7R到C0G,5个关键参数决定电路稳定性

MLCC陶瓷电容选型避坑指南&#xff1a;从X7R到C0G&#xff0c;5个关键参数决定电路稳定性 当你在设计一个精密电源模块时&#xff0c;突然发现输出电压在高温环境下出现异常波动&#xff1b;或者调试射频电路时&#xff0c;明明计算无误的滤波网络却始终达不到预期效果——这些…...

NormalReconstructZ节点]原理解析与实际应用

的数据丢失问题&#xff0c;确保光照计算的准确性&#xff0c;是高质量实时渲染不可或缺的一环。该节点的设计充分考虑了现代图形硬件的特性&#xff0c;能够在保持高质量视觉效果的同时&#xff0c;显著降低内存带宽和存储空间的需求&#xff0c;特别适合移动平台和性能敏感的…...

qstock量化分析:3行代码实现多市场数据获取与可视化

qstock量化分析&#xff1a;3行代码实现多市场数据获取与可视化 【免费下载链接】qstock qstock由“Python金融量化”公众号开发&#xff0c;试图打造成个人量化投研分析包&#xff0c;目前包括数据获取&#xff08;data&#xff09;、可视化(plot)、选股(stock)和量化回测&…...

Tree of Thoughts终极指南:5分钟掌握思维树算法原理与实战应用

Tree of Thoughts终极指南&#xff1a;5分钟掌握思维树算法原理与实战应用 【免费下载链接】tree-of-thought-llm [NeurIPS 2023] Tree of Thoughts: Deliberate Problem Solving with Large Language Models 项目地址: https://gitcode.com/gh_mirrors/tr/tree-of-thought-l…...

成电计算机复试面试:如何用一份‘心机’简历引导老师提问,并提前准备好答案?

计算机复试策略&#xff1a;如何用结构化简历设计引导面试走向 站在电子科技大学计算机复试的考场外&#xff0c;大多数考生都在反复背诵技术概念和项目细节&#xff0c;却很少有人意识到——面试本质上是一场精心设计的对话博弈。那些最终获得高分的考生&#xff0c;往往不是知…...

揭秘C++多态:动态行为的核心奥秘

C 多态&#xff1a;面向对象的动态行为核心机制多态性是面向对象编程&#xff08;OOP&#xff09;的核心概念之一&#xff0c;它允许对象在运行时根据其实际类型表现出不同的行为。在C中&#xff0c;多态性主要通过虚函数&#xff08;virtual functions&#xff09;和继承机制实…...

Android 离线语音合成技术选型指南:从MaryTTS到TensorFlowTTS

1. 为什么需要离线语音合成技术&#xff1f; 最近几年&#xff0c;越来越多的应用开始集成语音合成功能。你可能见过导航软件里实时播报路况的电子女声&#xff0c;或者听书App里流畅朗读小说的AI配音。这些场景背后&#xff0c;都离不开TTS&#xff08;Text-To-Speech&#x…...

Qwen3.5-2B部署实操:CentOS 7兼容性处理与依赖库降级方案

Qwen3.5-2B部署实操&#xff1a;CentOS 7兼容性处理与依赖库降级方案 1. 模型简介 Qwen3.5-2B是阿里云推出的轻量化多模态基础模型&#xff0c;属于Qwen3.5系列的小参数版本&#xff08;20亿参数&#xff09;。该模型主打低功耗、低门槛部署特性&#xff0c;特别适配端侧和边…...

Wan2.2-T2V-A5B常见错误排查:运行失败、生成卡顿的解决方法

Wan2.2-T2V-A5B常见错误排查&#xff1a;运行失败、生成卡顿的解决方法 1. 问题概述与快速诊断 Wan2.2-T2V-A5B作为一款轻量级文本到视频生成模型&#xff0c;虽然在资源消耗和响应速度上具有优势&#xff0c;但在实际使用过程中仍可能遇到运行失败或生成卡顿的问题。这些问题…...