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

力扣:669. 修剪二叉搜索树,今日份快乐

🍁 作者:知识浅谈,CSDN博客专家,华为云云享专家,阿里云签约博主,InfoQ签约作者
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈

今日份题解来了🛴🛴🛴

🎈题意

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。

所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。

示例 1:
在这里插入图片描述

输入:root = [1,0,2], low = 1, high = 2
输出:[1,null,2]

示例 2:
在这里插入图片描述
输入:root = [3,0,4,null,2,null,null,1], low = 1, high = 3
输出:[3,2,null,1]

提示:
树中节点数在范围 [1, 104] 内
0 <= Node.val <= 104
树中每个节点的值都是 唯一 的
题目数据保证输入是一棵有效的二叉搜索树
0 <= low <= high <= 104

🎈题解

class Solution {
    public TreeNode trimBST(TreeNode root, int low, int high) {
        //真傻了,这题容易想多,当节点值小于low,左子树删掉,大于height,右子树删掉,否则重新处理左右子树。
        if(root==null) return null;
        if(root.val<low) return trimBST(root.right,low,high);
        else 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;
    }
}

看似短,却是代码的精华。

相关文章:

  • java毕业设计KTV点歌系统mybatis+源码+调试部署+系统+数据库+lw
  • [python] 基于diagrams库绘制系统架构图
  • 2022 年全国职业院校技能大赛(中职组) 网络安全竞赛试题D模块评分标准
  • C++ 语法基础课1 —— 变量、输入输出、顺序语句
  • M的编程备忘录之C++——map和set
  • 《Orange‘s 一个操作系统的实现》第六章
  • Spring Cloud 拉取 Nacos 中配置文件
  • python-中断time.sleep一种更优雅的办法:event.wait
  • 【毕业设计】大数据公交数据分析与可视化 - 大数据 python falsk
  • Hadoop与Spark中的Shuffle过程梳理
  • CH9101芯片应用—硬件设计指南
  • [NCTF2019]True XML cookbook
  • 湖仓一体电商项目(十二):编写写入DM层业务代码
  • 遥感生态指数(RSEI)——四个指数的计算
  • 9--RNN
  • 「译」Node.js Streams 基础
  • Android开源项目规范总结
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • css的样式优先级
  • Docker 笔记(2):Dockerfile
  • HTTP中GET与POST的区别 99%的错误认识
  • Java 网络编程(2):UDP 的使用
  • Js基础——数据类型之Null和Undefined
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Shadow DOM 内部构造及如何构建独立组件
  • Vue.js源码(2):初探List Rendering
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 强力优化Rancher k8s中国区的使用体验
  • 少走弯路,给Java 1~5 年程序员的建议
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​人工智能书单(数学基础篇)
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #{} 和 ${}区别
  • #Ubuntu(修改root信息)
  • (20050108)又读《平凡的世界》
  • (C)一些题4
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (vue)页面文件上传获取:action地址
  • (办公)springboot配置aop处理请求.
  • (翻译)terry crowley: 写给程序员
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • ./configure、make、make install 命令
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .net6+aspose.words导出word并转pdf
  • .Net中ListT 泛型转成DataTable、DataSet
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @Mapper作用