LeetCode 1038. 从二叉搜索树到更大和树:(反)中序遍历

【LetMeFly】1038.从二叉搜索树到更大和树:(反)中序遍历

力扣题目链接:https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/

给定一个二叉搜索树 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/  相同

方法一:(反)中序遍历

二叉搜索树的中序遍历(左子→根→右子)得到的序列是非递减序列。反之,右子→根→左子得到的序列就是非递增序列。

“反中序遍历”的过程中,我们只需要使用一个遍历记录“当前所有遍历过的元素的和”,即为大于等于当前元素的所有元素的和。

  • 时间复杂度 O ( n ) O(n) O(n),其中 n n n是二叉树节点个数
  • 空间复杂度 O ( n ) O(n) O(n),最坏情况下二叉树退化成一条链,递归占用空间 O ( n ) O(n) O(n)

AC代码

C++
class Solution {
private:int last;void dfs(TreeNode* root) {if (!root) {return;}dfs(root->right);last += root->val;root->val = last;dfs(root->left);}
public:TreeNode* bstToGst(TreeNode* root) {last = 0;dfs(root);return root;}
};
Python
# from typing import Optional# # Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = rightclass Solution:def dfs(self, root: Optional[TreeNode]) -> None:if not root:returnself.dfs(root.right)self.last += root.valroot.val = self.lastself.dfs(root.left)def bstToGst(self, root: TreeNode) -> TreeNode:self.last = 0self.dfs(root)return root

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/134782862

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s中的Pod网络;Service网络;网络插件Calico

Pod网络&#xff1b;Service网络&#xff1b;网络插件Calico Pod网络 在K8S集群里&#xff0c;多个节点上的Pod相互通信&#xff0c;要通过网络插件来完成&#xff0c;比如Calico网络插件。 使用kubeadm初始化K8S集群时&#xff0c;有指定一个参数–pod-network-cidr10.18.0…

如何让软文更具画面感,媒介盒子分享

写软文这种带有销售性质的文案时&#xff0c;总说要有画面感&#xff0c;要有想象空间。只有针对目标用户的感受的设计&#xff0c;要了解用户想的是什么&#xff0c;要用可视化的描述来影响用户的感受&#xff0c;今天媒介盒子就和大家分享&#xff1a;如何让软文更具画面感。…

2023-12-05 LeetCode每日一题(到达首都的最少油耗)

2023-12-05每日一题 一、题目编号 2477. 到达首都的最少油耗二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵 n 个节点的树&#xff08;一个无向、连通、无环图&#xff09;&#xff0c;每个节点表示一个城市&#xff0c;编号从 0 到 n - 1 &#xff0c;且恰好有 …

Ubuntu之Sim2Real环境配置(坑居多)

不要一上来就复制哦,因为很多下面的步骤让我走了很多弯路,如果可能的话,我会重新整理再发出来 前提: 参考教程 Docs 创建工作空间(不用跟着操作,无用) 1.创建sim2real server container 1.尝试创建sim2real_server容器 后来使用 docker ps -a 发现我已经有sim2real_se…

机器学习 类别特征编码:Category Encoders 库的使用

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

202350读书笔记|《再别康桥:徐志摩诗选》——微风起,清芬酝藉,不减荼

202350读书笔记|《再别康桥&#xff1a;徐志摩诗选》——微风起&#xff0c;清芬酝藉&#xff0c;不减荼 《再别康桥&#xff1a;徐志摩诗选》我觉得有时候诗人是很狂热的&#xff0c;上头的感觉。 有几首很喜欢&#xff0c;节选如下&#xff1a; 偶然 我是天空里的一片云&…

内测分发平台支持应用的异地容灾的重要性

大家好&#xff0c;我是咕噜-凯撒&#xff0c;随着网络社会的发展&#xff0c;人们对于应用程序的依赖程度越来越高。无论是企业用户还是个人用户&#xff0c;都希望能够随时随地访问到需要使用的应用。所以对于内测分发平台来说保证应用的连续性和可靠性是非常的关键。内侧分发…

推荐一个开源的监控程序-Uptime

先放几张截图介绍一下 现场演示 尝试一下&#xff01; 东京演示服务器&#xff1a;https://demo.uptime.kuma.pet&#xff08;由 Uptime Kuma 赞助商 赞助&#xff09; 这是一个临时的现场演示&#xff0c;所有数据将在10分钟后删除。使用距离您较近的一个&#xff0c;但我建…

LinuxBasicsForHackers笔记 -- BASH 脚本

你的第一个脚本&#xff1a;“你好&#xff0c;黑客崛起&#xff01;” 首先&#xff0c;您需要告诉操作系统您要为脚本使用哪个解释器。 为此&#xff0c;请输入 shebang&#xff0c;它是井号和感叹号的组合&#xff0c;如下所示&#xff1a;#! 然后&#xff0c;在 shebang …

探索SpringBoot发展历程

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

年薪50w的测试开发是如何编写测试方案!看过来!!!

1. 测试方案内容 测试目标 测试对象测试完成时间 测试范围 测试目标 新增功能回归模块优先级 测试顺序测试深浅 测试策略 测试方法&#xff1a;黑盒、白盒、灰盒测试阶段&#xff1a;单元、集成、系统、验收测试类型&#xff1a; 功能性性能和稳定性安全自动化... 测试工…

您知道计算机是怎么分类的嘛

地表最强计算机 第 61 版全球最强大的超级计算机已经发布。名为 Top500&#xff0c;顾名思义&#xff0c;该列表列出了全球 500 台最强大的超级计算机。榜单显示&#xff0c;美国的AMD、英特尔和IBM处理器是超级计算系统的首选。在 TOP10 中&#xff0c;有四个系统使用 AMD 处理…

C++ day49 买卖股票的最佳时机

题目1&#xff1a;121 买卖股票的最佳时机 题目链接&#xff1a;买卖股票的最佳时机 对题目的理解 prices[i]表示一支股票在第i天的价格&#xff0c;只能在某一天买入这支股票&#xff0c;并在之后的某一天卖出该股票&#xff0c;从而获得最大利润&#xff0c;返回该最大值&…

IPTABLES(一)

文章目录 1. iptables基本介绍1.1 什么是防火墙1.2 防火墙种类1.3 iptables介绍1.4 包过滤防火墙1.5 包过滤防火墙如何实现 2. iptables链的概念2.1 什么是链2.2 iptables有哪些链 3. iptables表的概念3.1 什么是表3.2 表的功能3.3 表与链的关系 4. iptables规则管理4.1 什么是…

【华为数据之道学习笔记】3-4主数据治理

主数据是参与业务事件的主体或资源&#xff0c;是具有高业务价值的、跨流程和跨系统重复使用的数据。主数据与基础数据有一定的相似性&#xff0c;都是在业务事件发生之前预先定义&#xff1b;但又与基础数据不同&#xff0c;主数据的取值不受限于预先定义的数据范围&#xff0…

MySql概述及其性能说明

MySQL是一种开源的关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;现属于Oracle公司。MySQL是最流行的开源数据库之一&#xff0c;被广泛地应用于Web开发中。MySQL提供了一个高度稳定可靠的数据存储解决方案&#xff0c;同时也可以很容易地跨平台运行。My…

2023年广东工业大学腾讯杯新生程序设计竞赛

E.不知道叫什么名字 题意&#xff1a;找一段连续的区间&#xff0c;使得区间和为0且区间长度最大&#xff0c;输出区间长度。 思路&#xff1a;考虑前缀和&#xff0c;然后使用map去记录每个前缀和第一次出现的位置&#xff0c;然后对数组进行扫描即可。原理&#xff1a;若 s …

Linux篇之在Centos环境下搭建Nvidia显卡驱动

一、前提条件 1、首先确认内核版本和发行版本&#xff0c;再确认显卡型号 uname -a // Linux localhost.localdomain 4.18.0-408.el8.x86_64 #1 SMP Mon Jul 18 17:42:52 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux1.2 cat /etc/redhat-release // CentOS Stream release 81.3…

【S2ST】Direct Speech-to-Speech Translation With Discrete Units

【S2ST】Direct Speech-to-Speech Translation With Discrete Units AbstractIntroductionRelated workModelSpeech-to-unit translation (S2UT) modelMultitask learningUnit-based vocoder ExperimentsDataSystem setupBaselineASRMTTTSS2TTransformer Translatotron Evaluat…

Python Jinja2 库的无限可能性

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Jinja2&#xff0c;作为Python中最流行的模板引擎之一&#xff0c;为开发者提供了强大的工具&#xff0c;用于在Web应用和其他项目中生成动态内容。本文将深入研究 Jinja2 库的各个方面&#xff0c;提供更丰富的…