110、【树与二叉树】leetcode ——669. 修剪二叉搜索树:递归法(C++版本)

news2024/11/13 23:15:41

题目描述

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

解题思路

大题思路类似于 450.删除二叉搜索树中的节点(递归法+迭代法) ,区别在于删除的是某一区域的节点值,并且要保留区域内部的节点值。
对于第一次找到结点值小于low的情况,有两种:(1)该结点无右子树,那么直接删除这个结点及以下的子树即可,返回NULL;(2)该结点有右子树,那么右子树中可能有大于low的情况,需要继续向右遍历。

同理,对于第一次找到结点值大于high的情况,也有两种:(1)该结点无左子树,那么直接删除这个结点及以下的子树即可,返回NULL;(2)该结点有左子树,那么左子树中可能有小于high的情况,需要继续向左遍历。

本题的关键是用好递归这个结构,用好每次他向下的遍历和返回的值。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    TreeNode* trimBST(TreeNode* root, int low, int high) {
        if(!root)                   return NULL;
        // 当找到的结点值小于low时,继续向右遍历,保留大于low的,删除小于low的
        if(root->val < low)         return trimBST(root->right, low, high);
        // 当找到的结点值大于high时,继续向左遍历,保留小于high的,删除大于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;
    }
};

参考文章:669. 修剪二叉搜索树

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

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

相关文章

【JavaWeb】HTML零基础入门

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaWeb】 ✈️✈️本篇内容:HTML基础语法详解&#xff0c;附带综合案例。 &#x1f680;&#x1f680;代码托管平台github&#xff1a;JavaWeb代码存放仓库&am…

Python实战项目2——自动获取酷狗音乐工具

&#x1f935;‍♂️ 个人主页老虎也淘气 个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f44d;&#x1f3fb; 收藏…

vueJs中readonly与shallowReadonly函数的使用比较

01readonly()函数让一个响应式数据变为只读的,接收一个响应式数据,经过readonly加工处理一下,那么新赋值的数据都不允许修改接受一个对象 (不论是响应式还是普通的) 或是一个 ref&#xff0c;返回一个原值的只读代理页面没有更新有两种情况[1]. 数据修改了,但数据不是响应式,vu…

自主可控!万应低代码通过华为鲲鹏、麒麟等多项国产化认证及国家信息安全等级保护三级备案证明

01 万应低代码通过信息系统安全等级保护三级备案证明 凭借过硬的技术能力及完善的信息安全管理体系&#xff0c;万应低代码顺利通过“信息系统安全等级保护三级测评”&#xff08;简称&#xff1a;等保三级&#xff09;&#xff0c;正式获得由公安部核准颁发的“信息系统安全等…

Probabilistic Volumetric Fusion for Dense Monocular SLAM

论文标题&#xff1a;Probabilistic Volumetric Fusion for Dense Monocular SLAM 论文链接&#xff1a;https://arxiv.org/pdf/2210.01276.pdf 论文思想 提出了一种新的方法&#xff0c;通过利用深度密集的单眼SLAM和快速不确定性传播&#xff0c;从图像中重建三维场景 所提…

Vue如何高效通过JSX动态渲染组件

一、明确需求 如何渲染动态组件呢&#xff1f; 有一组数组结构如下&#xff1a; const arr [ { tag: van-field },// 输入框{ tag: van-cell }, // 弹出层{ tag: van-stepper } // 步进器 ] 想通过循环arr&#xff0c;拿到tag渲染对应的组件。 下面我们分析如何写才是最优。…

高校数据可视化(智慧校园)

教育数据可视化大屏有哪些内容&#xff1f; 教育数据可视化大屏能够展示和分析很多数据&#xff0c;比如&#xff1a;在校生数据分析、招生数据分析、就业数据分析、教职工数据分析&#xff0c;科研数据分析等综合数据分析。 跟传统的教学不同&#xff0c;现代教育对效果的要求…

03.字符函数和字符串函数

C语言中对字符和字符串的处理很是频繁&#xff0c;但是C语言本身是没有字符串类型的&#xff0c;字符串通常放在 常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。 1. 函数介绍 1.1 strlen size_t strlen ( const char * str ); ✳字符串以 \0 作…

python虚拟机集锦(2)-垃圾收集算法(2)

目录识别参考循环为什么移动无法访问的对象更好正在销毁无法访问的对象优化&#xff1a;世代收集最古老的一代识别参考循环 当GC启动时&#xff0c;它在第一个链接列表中拥有所有要扫描的容器对象。目标是移动所有无法到达的对象。由于大多数对象都是可访问的&#xff0c;因此…

【回首2022,展望2023,兔年你好!】

兔年到&#xff0c;新年好&#xff01;提前祝各位程序猿新年好&#xff01;新的一年&#xff0c;意味着新的开始。回顾2022&#xff0c;我学习从0基础萌新&#xff0c;蜕变成学习完c语言&#xff0c;有了基础代码能力的新手。从第一个printf出来hello world&#xff0c;打印到屏…

jpg图片损坏怎么修复?可以试试这个方法

生活中&#xff0c;相信不少小伙伴在使用电脑或手机时&#xff0c;难免会遇到这样的问题&#xff0c;就是保存的图片损坏了&#xff0c;看不到图像了。在出现图像损坏后&#xff0c;我们经常问自己的第一个问题是&#xff0c;有什么办法可以修复它们&#xff0c;之前小编也是遇…

回收租赁商城系统功能拆解11讲-会员分组

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格&#xff0c;后台调整最终回收价&#xff0c;用户同意回收后系统即刻放款&#xff0c;用户微信零…

MySQL监控(三):Grafana入门

1.官方文档 Grafana 安装包下载地址 基于Prometheus、Grafana的可视化监控实践 grafana安装部署、自定义主题、dashboard模板导入 Grafana Dashboard下载 2.安装 我是通过压缩包的方式安装的&#xff0c;官网也有给出yum的安装方式。 wget https://dl.grafana.com/enterpri…

【Javascript】面向对象编程,this,原型与原型链,类与实例,class,Maps

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录对象中的方法/thisthis使用bind函数原型原型链类与实例classclass语法补充Map对象中的方法/this …

【设计模式】结构型模式·代理模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易&#xff0c;如果您觉得写的不错&#xff0c;欢迎给博主来一波点赞、收藏~让博主更有动力吧&#xff01; 一.概念 由于某些原因访问对象不适合或者不能直接引用目标对象&#xff0c;这时可以为目标对象…

可视化VIT中的注意力

2022年&#xff0c; Vision Transformer (ViT)成为卷积神经网络(cnn)的有力竞争对手&#xff0c;卷积神经网络目前是计算机视觉领域的最先进技术&#xff0c;广泛应用于许多图像识别应用。在计算效率和精度方面&#xff0c;ViT模型超过了目前最先进的(CNN)几乎四倍。 ViT是如何…

【C++】面向对象---多态(万字详解)

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️文章专栏&#xff1a;✈️小林的C之路       &#x1f6f0;️欢迎关注&#xff1a;&#x1f44d…

SIMD性能优化

文章目录前言MMXSSEAVX使用内置函数使用SSE/AVX命名规则SSE/AVX操作类别实战汇编使用优化前代码详解优化后代码详解引用文章#mermaid-svg-sNu7iEVk2jpyjjtX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#fff;}#mermaid-svg-sNu7iEVk2…

【黑马学成在线2023版】解决P7创建父工程时Maven的pom文件依赖爆红问题(亲测有效)

本期目录问题描述解决方案问题描述 感谢黑马贡献的高质量视频教程《学成在线》微服务项目。笔者在学到《P7-创建父工程基础工程》时&#xff0c;直接粘贴黑马老师的 pom 文件中的依赖会出现依赖的 <artifactId> 和 <version> 爆红&#xff0c;显示无法找到依赖的错…

vite学习笔记

vite 1.vite是什么&#xff1f; 基于ES-Module的前端构建工具 2.为什么选择vite&#xff1f; 在浏览器支持 ES 模块之前&#xff0c;JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。 缓慢的服务器启动 当冷启动开发服务器时&#xff0c;基于打包器的方式…