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

二叉树——把二叉搜索树转换为累加树

538. 把二叉搜索树转换为累加树

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

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

节点的左子树仅包含键 小于 节点键的节点。
节点的右子树仅包含键 大于 节点键的节点。
左右子树也必须是二叉搜索树。
注意:本题和 1038: https://leetcode-cn.com/problems/binary-search-tree-to-greater-sum-tree/ 相同

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

输入:root = [1,0,2]
输出:[3,3,2]
示例 4:

输入:root = [3,2,4,1]
输出:[7,9,4,10]

提示:

树中的节点数介于 0 和 104 之间。
每个节点的值介于 -104 和 104 之间。
树中的所有值 互不相同 。
给定的树为二叉搜索树。

思路

在这里插入图片描述
看图:他是中序的倒叙进行变化的——右中左
后一个值=前一个值+后一个值
右:8——中:8+7=15——左:无
右:15——中:15+6=21——左:21+5=26

  • 返回值,参数
    返回值:无
    参数:节点
void tra(TreeNode* root){
  • 终止条件
    遍历完成,节点为空
 if(root==NULL) return ;
  • 单次递归
    递归右子树
    当前节点的值+=前一个节点值
    存当前节点的值
    递归左节点
        tra(root->right);root->val+=pre;pre=root->val;tra(root->left);

代码

class Solution {
public:int pre=0;void tra(TreeNode* root){if(root==NULL) return ;tra(root->right);root->val+=pre;pre=root->val;tra(root->left);return ;}TreeNode* convertBST(TreeNode* root) {tra(root);return root;}
};
http://www.lryc.cn/news/26341.html

相关文章:

  • Java使用DFA算法实现敏感词过滤
  • UG NX二次开发(C#)-外挂 - 配置文件说明(.men文件/.rtb文件/.trb文件)
  • Web3中文|日本元宇宙经济“狂飙”
  • @Autowired和@Resource到底有什么区别
  • 2023年最新阿里云服务器价格表出炉(精准收费标准及配置价格表)
  • ElasticSearch - SpringBoot整合ES实现文档的增删改操作
  • 嵌入式 LVGL移植到STM32F4
  • VSCode——SSH免密登录
  • python未来应用前景怎么样
  • webpack基本使用和开发环境配置
  • 3.2 http协议
  • 页面访问升级出错怎么解决
  • leetcode 181. 超过经理收入的员工
  • 任务类风险漏洞挖掘思路
  • 2023年Dubbo常见面试题
  • 星光2开发板使用ECR6600U无线wifi网卡的方法
  • 【ArcGIS Pro二次开发】(11):面要素的一键拓扑
  • 【实现点击下载按钮功能 Objective-C语言】
  • 界面控件DevExpress WinForm——轻松构建类Visual Studio UI(三)
  • 项目实战-瑞吉外卖day01(B站)
  • Linux 学习整理(使用 iftop 查看网络带宽使用情况 《端口显示》)
  • Vue3创建项目(四)axios封装及接口配置
  • 【算法笔记】递归与回溯
  • 蓝桥杯备赛——Echarts学习
  • 动态规划--最长公共子串
  • 【运筹优化】剩余空间法求解带顺序约束的二维矩形装箱问题 + Java代码实现
  • 第四阶段15-关于权限,处理解析JWT时的异常,跨域请求,关于Spring Security的认证流程
  • 毕业设计 基于51单片机的指纹红外密码电子锁
  • 【JavaWeb】数据链路层协议——以太网 + 应用层协议——DNS
  • docker 容器安装 python jre