1.3 力扣二叉树中等题

题目一:

669. 修剪二叉搜索树

给你二叉搜索树的根节点 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]

此前还做过一次:9.10 力扣669. 修剪二叉搜索树_修剪二叉查找树,使得树中所有节点的值在[low, high]中,并输出修剪后二叉查找树,-CSDN博客过了这么久再做,需要思考时间更短了,代码也更精简了许多(也可能是做过的原因)。hhhh

思路:

需要将二叉搜索树的值控制在【low,high】,只需要找到 恰好等于low,high值的节点时

1.val<low

       只保留右孩子节点满足【low,high】的值即可

2.val>high

        只保留左孩子节点满足【low,high】的值即可

保留这些孩子节点的方式可以用递归判断

将不需要保留的节点进行delete,但不是本题的重点内容(省略没写)

class Solution {
public:
    TreeNode* trimBST(TreeNode* root, int low, int high) {
        if(!root) return root;
        if(root->val>high)
        {
            //将该节点、左子树进行delete
            //.......
            //把适合的左子树进行返回
            return trimBST(root->left,low,high);
        }
        else if(root->val<low)
        {
            //将该节点、右子树进行delete
            //.......
            //把合适的右子树进行返回
            return trimBST(root->right,low,high);
        }
        root->left=trimBST(root->left,low,high);
        root->right=trimBST(root->right,low,high);
        return root;
        
    }
};

题目二:

538. 把二叉搜索树转换为累加树 - 力扣(LeetCode)
 

给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。

提醒一下,二叉搜索树满足下列约束条件:

  • 节点的左子树仅包含键 小于 节点键的节点。
  • 节点的右子树仅包含键 大于 节点键的节点。
  • 左右子树也必须是二叉搜索树、

示例 1:

输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]

示例 2:

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

思路:

代码随想录 (programmercarl.com)

累加树是啥?正常前序遍历的结果是[2, 5, 13],求从后到前的累加数组,也就是[20, 18, 13]

按 右 中 左 顺序将二叉树累加起来即可

细节:需要用一个pre记录上一个节点,并仅在 处理当前节点时改变该pre=cur

class Solution {
public:
    TreeNode* sumBST(TreeNode* cur,TreeNode*& pre)
    {
        if(!cur) return nullptr;
        //右子树
        cur->right=sumBST(cur->right,pre);
        //中间节点
        if(pre) cur->val+=pre->val;
        pre=cur;
        //左子树
        cur->left=sumBST(cur->left,pre);
        return cur;

    }
    TreeNode* convertBST(TreeNode* root) {
        TreeNode* temp=nullptr;
        sumBST(root,temp);
        return root;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图像清晰度评估指标

图像清晰度评估涉及多个指标&#xff0c;这些指标可用于定量测量图像的清晰度和质量。 以下是一些常见的图像清晰度评估指标&#xff1a; 均方根误差&#xff08;Root Mean Square Error&#xff0c;RMSE&#xff09;&#xff1a; 通过计算原始图像和处理后图像之间的像素差异的…

【计算机视觉】常用图像数据集

图像数据集 模型需要好的数据才能训练出结果&#xff0c;本文总结了机器学习图像方面常用数据集。 MNIST 机器学习入门的标准数据集&#xff08;Hello World!&#xff09;&#xff0c;10个类别&#xff0c;0-9 手写数字。包含了60,000 张 28x28 的二值训练图像&#xff0c;10…

滑动窗口最大值(力扣239题)

单调递减队列&#xff1a; 在解决题目之前&#xff0c;我们先来了解一下单调递减队列&#xff0c;它其实就是在队列的基础上多加了一些限制&#xff0c;如下图&#xff1a; 要求队列中的元素必须按从大到小的顺序排列。 如果向单调递减队列中加入数字 1&#xff0c;可以直接加入…

【Vue2+3入门到实战】(22)VUE3之组合式API - setup、reactive和ref函数、computed、watch、生命周期函数详细讲解

目录 一、组合式API - setup选项1. setup选项的写法和执行时机2. setup中写代码的特点3. <script setup>语法糖 二、组合式API - reactive和ref函数1. reactive2. ref3. reactive 对比 ref 三、组合式API - computed四、组合式API - watch1. 侦听单个数据2. 侦听多个数据…

SpringBoot: 通过MyBatis访问ClickHouse

一、ClickHouse中建表&#xff0c;添加数据 二、SpringBoot项目添加mybatis、clickhouse、druid相关依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version></dependency>…

MySQL第三战:CRUD,函数1以及unionunion all

前言 在当今的数字化时代&#xff0c;数据库已经成为信息管理的重要工具。其中&#xff0c;MySQL作为一种流行的关系型数据库管理系统&#xff0c;已经广泛应用于各种业务场景。在本文中&#xff0c;我们将深入探讨MySQL中的核心概念&#xff0c;包括创建&#xff08;Create&a…

航空业数字化展翅高飞,开源网安专业服务保驾护航

​某知名航空公司是中国首批民营航空公司之一&#xff0c;运营国内外航线200多条&#xff0c;也是国内民航最高客座率的航空公司之一。在数字化发展中&#xff0c;该航空公司以数据驱动决策&#xff0c;通过精细化管理、数字创新和模式优化等方式&#xff0c;实现了精准营销和个…

线性代数——(期末突击)矩阵(上)-概念篇(矩阵的定义、矩阵的运算、特殊矩阵、初等变换)

目录 矩阵的定义 矩阵的运算 相加 相乘 数乘 与单位阵相乘 矩阵的幂 转置 特殊矩阵 数量矩阵 对称矩阵 伴随矩阵 逆矩阵 初等变换 矩阵的定义 由个数排成的m行n列的数表&#xff0c;称为m行n列的矩阵&#xff0c;简称矩阵&#xff0c;记作&#xff1a; 简记为…

Harmony 开始支持 Flutter ,聊聊 Harmony 和 Flutter 之间的因果

原创作者&#xff1a;恋猫de小郭 相信大家都已经听说过&#xff0c;明年的 Harmony Next 版本将正式剥离 AOSP 支持 &#xff0c;基于这个话题我已经做过一期问题汇总 &#xff0c;当时在 现有 App 如何兼容 Harmony Next 问题上提到过&#xff1a; 华为内部也主导适配目前的主…

异常检测 | Matlab基于GNN图神经网络的异常数据检测

异常检测 | Matlab基于GNN图神经网络的异常数据检测 目录 异常检测 | Matlab基于GNN图神经网络的异常数据检测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 Matlab基于GNN图神经网络的异常数据检测。其核心思想是学习一个函数映射。本次使用人类活动数据&#…

MySQL的基础架构之内部执行过程

MySQL的逻辑架构图 如上图所示&#xff0c;MySQL可以分为Server层和存储引擎层两部分&#xff1a; 1&#xff09;Server层涵盖了MySQL的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学和加密函数等&#xff09;&#xff0c;所有跨存储引擎…

金色麦芒的2023

2023年即将过去&#xff0c;回首这一年&#xff0c;我深感自己在技术和职业生涯中取得了巨大的进步。这一年里&#xff0c;我不仅在技术层面有了更深入的掌握&#xff0c;也在个人成长和职业规划上有了更明确的方向。 首先&#xff0c;在技术层面&#xff0c;我今年最大的收获是…

2024.1.2 Redis 数据类型 Stream、Geospatial、HyperLogLog、Bitmaps、Bitfields 简介

目录 引言 Stream 类型 Geospatial 类型 HyperLogLog 类型 Bitmaps 类型 Bitfields 类型 引言 Redis 最关键&#xff08;应用广泛、频繁使用&#xff09;的五个数据类型 StringListHashSetZSet 下文介绍的数据类型一般适合在特定的场景中使用&#xff01; Stream 类型 St…

109-Gradle构建工具的学习

Gradle构建工具的学习 Gradle 简介&#xff1a; Gradle 是一款Google 推出的基于 JVM、通用灵活的项目构建工具&#xff0c;支持 Maven&#xff0c;JCenter 多种第三方仓库&#xff0c;支持传递性依赖管理、废弃了繁杂的xml 文件&#xff0c;转而使用简洁的、支持多种语言&am…

docker 搭建gitlab 恢复和备份

最近一直在折腾gitlab 代码管理系统 采用docker搭建 镜像网址 https://hub.docker.com/ 技术交流 http://idea.coderyj.com/ 1.因为我要恢复的版本是12.0.9的所有我就下载了docker-ce的12.0.9的镜像 1.下载镜像 docker pull gitlab/gitlab-ce:12.0.9-ce.02.安装 docker run …

顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音(mod_cti基于FreeSWITCH)

介绍 顶顶通呼叫中心中间件通过队列外呼拨打另一个sip并且放音 一、创建sip 打开ccadmin->点击sip->创建sip->重新启动fs 二、添加acl 添加一个新的->点击提交XML->在运维调试执行reloadacl&#xff0c;这样才可以生效 三、创建拨号方案 创建一个新的拨号方…

【Java】面向对象程序设计 期末复习总结

语法基础 数组自带长度属性 length&#xff0c;可以在遍历的时候使用&#xff1a; int []ages new int[10];for (int i 0; i < ages.length; i)System.out.println(ages[i]); 数组可以使用增强式for语句进行只读式遍历&#xff1a; int[] years new int[10];for (int ye…

【华为数据之道学习笔记】9-4“静”“动”结合的数据保护与授权管理

静态控制&#xff1a;数据保护能力架构 在充分识别数据风险并标识数据安全隐私后&#xff0c;数据底座产品还需要提供不同程度的数据保护能力。数据保护能力包括存储保护、访问控制、可追溯三种&#xff0c;每种保护能力都面向不同的业务管理需求&#xff0c;如图所示。 图-数据…

互联网演进历程:从“全球等待”到“全球智慧”的技术革新与商业变革

文章目录 一、导言二、World Wide Wait (全球等待)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 三、World Wide Web (万维网)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 四、World Wide Wisdom (全球智慧)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 五、…

C++ 命名空间 namespace详解

文章目录 1 . 前言2 . 命名冲突3 . 命名作用域4 . 匿名空间5 . 命名嵌套6 . 命名动态赋值7 . 命名空间追加内容8 . 命名空间指定9 . 小结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 前言 此篇博文详解C的namespace命名空间平台 …