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

【代码随想录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.xdnf.cn/news/17729.html

相关文章:

  • 【CLR via C#(第3版)阅读笔记】类型基础
  • PostgreSQL——视图
  • 嵌入式C/C++面试大全
  • Gradle(四)Maven 项目迁移 Gradle 项目实践
  • spring mvc HttpMessageConverter 消息转换器
  • 【KALI】第一篇 安装Kali Linux虚拟机之详细操作步骤讲解
  • CNN - 卷积层
  • 利用 Java 爬虫按图搜索 1688 商品(拍立淘)实战指南
  • 高效TypeScript开发:VSCode终极配置指南
  • Varjo XR虚拟现实军用车辆驾驶与操作培训
  • 【MATLAB代码】滑动窗口均值滤波、中值滤波、最小值/最大值滤波对比。订阅专栏后可查看完整代码
  • OpenCV中对图像进行平滑处理的4种方式
  • 《多级缓存架构设计与实现全解析》
  • 【跨越 6G 安全、防御与智能协作:从APT检测到多模态通信再到AI代理语言革命】
  • 机器视觉的磁芯定位贴合应用
  • GraphRAG查询(Query)流程实现原理分析
  • Java+Vue构建的MES信息管理系统,含完整源码,功能涵盖生产跟踪、质量管控等,助力企业实现精细化、智能化生产管理
  • 【16-softmax回归】
  • AI 赋能的软件工程全生命周期应用
  • springboot+vue实现通过poi完成excel
  • Postman 平替 技术解析:架构优势与实战指南
  • 观察者模式(C++)
  • 【Leetcode hot 100】76.最小覆盖字串
  • 【HarmonyOS】Window11家庭中文版开启鸿蒙模拟器失败提示未开启Hyoer-V
  • SwiftUI 页面弹窗操作
  • 用飞算JavaAI一键生成电商平台项目:从需求到落地的高效实践
  • 使用免费API开发口播数字人
  • [机器学习]07-基于多层感知机的鸢尾花数据集分类
  • c++中的Lambda表达式详解
  • Java基础07——基本运算符(本文为个人学习笔记,内容整理自哔哩哔哩UP主【遇见狂神说】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)