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

leetcode669. 修剪二叉搜索树(java)

修剪二叉搜索树

  • 题目描述
    • 递归
    • 代码演示:

题目描述

难度 - 中等
LC - 669. 修剪二叉搜索树

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

示例1:
在这里插入图片描述
提示:
树中节点数在范围 [1, 10^4] 内
0 <= Node.val <= 10^4
树中每个节点的值都是 唯一 的
题目数据保证输入是一棵有效的二叉搜索树
0 <= low <= high <= 10^4

在这里插入图片描述

递归

由于被修剪的是二叉搜索树,因此修剪过程必然能够顺利进行。
容易想到使用原函数作为递归函数:

  1. 若 root.val 小于边界值 low,则 root 的左子树必然均小于边界值,我们递归处理 root.right 即可;
  2. 若 root.val 大于边界值 high,则 root 的右子树必然均大于边界值,我们递归处理 root.left 即可;
  3. 若 root.val 符合要求,则 root 可被保留,递归处理其左右节点并重新赋值即可。

代码演示:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if(root == null){return null;}if(root.val < low){return trimBST(root.right,low,high);}if(root.val > high){return trimBST(root.left,low,high);}root.right = trimBST(root.right,low,high);root.left = trimBST(root.left,low,high);return root;}
}
http://www.lryc.cn/news/156140.html

相关文章:

  • 计算机网络的故事——确认访问用户身份的认证
  • C#禁用或启用任务管理器
  • 【Redis】NoSQL之Redis的配置及优化
  • 【数据库】如何利用Python中的petl将PostgreSQL中所有表的外键删除,迁移数据,再重建外键
  • Si24R2F+畜牧 耳标测体温开发资料
  • 阿里云服务器退款流程_退订入口_到账时间说明
  • 自然语言处理实战项目17-基于多种NLP模型的诈骗电话识别方法研究与应用实战
  • 安全错误攻击
  • ELK安装、部署、调试 (八)logstash配置语法详解
  • SPI协议
  • 机器学习算法系列————决策树(二)
  • ACM中的数论
  • 我的创作纪念日 —— 一年之期
  • qt.qpa.plugin:找不到Qt平台插件“wayland“|| (下载插件)Ubuntu上解决方案
  • 详解Spring Boot中@PostConstruct的使用
  • 判断子序列
  • Python Opencv实践 - 轮廓特征(最小外接圆,椭圆拟合)
  • Ubuntu22.04 LTS+NVIDIA 4090+Cuda12.1+cudnn8.8.1
  • 重装系统后,MySQL install错误,找不到dll文件,或者应用程序错误
  • 线程同步机制类封装及线程池实现
  • Linux中的用户、组和权限
  • python学习--基本数据类型之字典
  • 【OpenCV入门】第九部分——模板匹配
  • 在设计web页面时,为移动端设计一套页面,PC端设计一套页面,并且能自动根据设备类型来选择是用移动端的页面还是PC端的页面。
  • 微信小程序地图应用总结版
  • 分支创建查看切换
  • 参编三大金融国标,奇富科技以技术促行业规范化演进
  • 芯片开发之难如何破解?龙智诚邀您前往DR IP-SoC China 2023 Day
  • Gof23设计模式之策略模式
  • SAP 物料主数据屏幕增强