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

【代码随想录day 20】 力扣 669. 修剪二叉搜索树

视频讲解:https://www.bilibili.com/video/BV17P41177ud/?share_source=copy_web&vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0669.%E4%BF%AE%E5%89%AA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html#%E6%80%9D%E8%B7%AF
力扣题目:https://leetcode.cn/problems/trim-a-binary-search-tree/
主要思路:

  1. 遍历二叉树判断节点
  2. 如果节点的值小于区间,则左子树会更小,因此左子树全部删除,但不能直接连接右子树节点,因为右子树可能存在范围之外的节点,因此需要进入右子树继续遍历
  3. 如果节点值大于区间,右子树会更大,因此进入左子树遍历
  4. 单次递归返回情况,如果空节点则想上一层返回空节点。如果节点小于返回右节点。如果大于返回左节点。最后返回root根节点
class Solution {
public:TreeNode* trimBST(TreeNode* root, int low, int high) {//判断终止条件if(root == NULL) return NULL;//如果节点值小于区间if(root->val < low) {//左子树全部删除,继续遍历右子树TreeNode *right = trimBST(root->right, low, high);return right;}//如果节点值大于区间if(root->val > high){//右子树全部删除,继续遍历左子树TreeNode *left = trimBST(root->left, low, high);return left;}//单次递归root->left = trimBST(root->left, low, high);root->right = trimBST(root->right, low, high);//返回值return root;}
};
http://www.dtcms.com/a/330873.html

相关文章:

  • MySQL 性能优化实战指南:释放数据库潜能的艺术
  • 【visual studio】visual studio配置环境opencv和onnxruntime
  • 零知开源——基于STM32F4的HC-12无线通信系统及ST7789显示应用
  • 【Linux】库制作与原理
  • mysql卸载了 服务内还显示如何解决
  • CVPR 2025丨时间序列:动态多尺度机制登场,即插即用,预测稳准狠刷新SOTA
  • Vivado GPIO详解
  • 量化因子RSI
  • 中小型泵站物联网智能控制系统解决方案:构建无人值守的自动化泵站体系
  • 基于STM32单片机智能手表GSM短信上报GPS定位温湿度检测记步设计
  • OS设备UDID查看方法
  • Mybatis学习笔记(一)
  • 「iOS」————设计架构
  • 在语音通信业务量下降时候该怎么做
  • PHP现代化全栈开发:微服务架构与云原生实践
  • 基于FPGA的8PSK+卷积编码Viterbi译码通信系统,包含帧同步,信道,误码统计,可设置SNR
  • 一台联想 ThinkCentre M7100z一体机开机黑屏无显示维修记录
  • 优化 SQL 查询:选出每个分组最大值的行并插入 10W 条测试数据
  • 云计算-Docker Compose 实战:从OwnCloud、WordPress、SkyWalking、Redis ,Rabbitmq等服务配置实例轻松搞定
  • 【代码随想录day 20】 力扣 108.将有序数组转换为二叉搜索树
  • 老生常谈之引用计数:《More Effective C++》条款29
  • 炎热的夏天
  • SQL181 第二快/慢用时之差大于试卷时长一半的试卷
  • 掌握MATLAB三维可视化:从基础到实战技巧
  • Redis 从入门到生产:数据结构、持久化、集群、工程实践与避坑(含 Node.js/Python 示例)
  • jenkins在windows配置sshpass
  • 构建Node.js单可执行应用(SEA)的方法
  • 【前端工具】使用 Node.js 脚本实现项目打包后自动压缩
  • Go语言defer机制详解与应用
  • 机器学习介绍