​LeetCode解法汇总1038. 从二叉搜索树到更大和树

news/2024/7/5 2:17:17

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


描述:

给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。

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

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

 

示例 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]

 

提示:

  • 树中的节点数在 [1, 100] 范围内。
  • 0 <= Node.val <= 100
  • 树中的所有值均 不重复 。

 

注意:该题目与 538: https://leetcode-cn.com/problems/convert-bst-to-greater-tree/  相同

解题思路:

本题适用递归的解决方案。

一个节点的值,可以从三方面构成,

1.父节点传入的大于当前节点的值的和;

2.当前节点的值;

3.当前节点右子节点的和。

所以我们构建一个递归方法,传入值为大于该节点的值之和,返回值为当前节点所有的节点值之和。每次遍历的时候,首先求右节点值之和,当前节点值则可以计算得出。

代码:

class Solution {
     public TreeNode bstToGst(TreeNode root) {
        search(root, 0);
        return root;
    }

    int search(TreeNode node, int parentValue) {
        if (node == null) {
            return 0;
        }
        int rightValue = search(node.right, parentValue);
        int sum = rightValue + node.val;
        node.val = node.val + parentValue + rightValue;
        int leftValue = search(node.left, node.val);
        // 返回的是当前节点的所有节点之和
        sum += leftValue;
        return sum;
    }
}


http://lihuaxi.xjx100.cn/news/1863257.html

相关文章

一次性客户的笔记总结

创建一次性客户&#xff0c;系统会给出一个客户编码&#xff1b; 每次记账的时候&#xff0c;在录入过账码及客户编码后&#xff0c;点击回车&#xff0c;都需要录入这个客户的详细信息&#xff08;比如 客户名称等&#xff09; 一次性客户的信息存储在BSEC表中&#xff0c;这种…

浅谈对SSH的理解

ssh框架指的是Spring Struts2 and Hibernate,Spring可以理解为绿草丛&#xff0c;负责通过配置文件或注解管理组件之间的依赖关系&#xff0c;并提供了高效的事务管理功能&#xff0c;其出色的ioc和aop面向切面编程可以织入增强&#xff0c;并且具有很多spring注解可以减轻配置…

[算法思考记录]力扣1094.拼车 C++【差分数组】

Problem: 1094. 拼车 Code /* 相当于在一条路上开车&#xff0c;乘客在某个时间点上车&#xff0c;他们会影响在下车之前的路程的车载人数。很明显这是差分的做法。*/ class Solution { public:bool carPooling(vector<vector<int>>& trips, int capacity) {v…

软件验收计划书

软件项目验收计划的作用主要有以下几点&#xff1a; 确保项目质量&#xff1a;通过项目验收&#xff0c;客户或相关方可以对项目的成果进行全面、系统的评估&#xff0c;以确保项目达到预期的质量标准。 发现和解决问题&#xff1a;在项目开发过程中&#xff0c;难免会存在一些…

法律情境扮演、逆向推理文字游戏、AIGC创作……见证AI极致生产力!

飞桨星河社区&#xff0c;以飞桨和文心大模型为核心&#xff0c;集开放数据、开源算法、云端GPU算力及大模型开发工具于一体&#xff0c;在大模型范式下&#xff0c;为开发者提供模型与应用的高效开发环境。在成立的5年以来&#xff0c;已汇集660万AI开发者&#xff0c;覆盖深度…

Kubernetes学习笔记-Part.07 Harbor搭建

目录 Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退 第七章 Harbor搭建 Docker-Compose是用来管理容器的…

Linux:dockerfile编写搭建mysql练习(10)

搭建了httpyum仓库 Dockerfile 主要文件 基于centos基础镜像 centos.repo yum仓库 db_init.sh mysql初始化脚本 run.sh 启动脚本 vim Dockerfile写入FROM centosMAINTAINER teacher lyRUN mkdir /etc/yum.repos.d/bak ; mv /etc/yu…

AntDesign去国际化 | router页面显示问题

删除 Ant Design Pro 中的【国际化】模块报错&#xff1a;Environment key “es2022“ is unknown 问题描述 使用 npm run i18n-remove 运行 “i18n-remove”: “pro i18n-remove --localezh-CN --write” 删除【国际化】模块时出现如下报错&#xff1a; 问题分析 报错的大致…