Time: 20190907
Type: Easy

题目描述

给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。

例如:

输入: 二叉搜索树:5/   \2     13输出: 转换为累加树:18/   \20     13

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-bst-to-greater-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

BST的中序遍历是一个递增序列,显然每个结点值是后续所有结点值之和。

按照逆中序遍历,过程中累加,并将累加的和添加到当前结点即可。用递归的思路比较好解。

代码

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def __init__(self):self.num = 0def convertBST(self, root: TreeNode) -> TreeNode:# 中序遍历后的序列是递增序列if not root:return Noneself.convertBST(root.right)root.val += self.numself.num = root.val # 保存的是累加过后的数值self.convertBST(root.left)return root

END.

Leetcode 538.二叉树转换为累加树相关推荐

  1. [二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树

    [二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树 1.题目 题目链接 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree) ...

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

    leetcode 538:把二叉树搜索树转换为累加树 538. 把二叉搜索树转换为累加树 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使 ...

  3. leetcode c++未初始化_LeetCode 力扣官方题解 | 538. 把二叉搜索树转换为累加树

    力扣 538. 把二叉搜索树转换为累加树(点击查看题目) 力扣​leetcode-cn.com 题目描述 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater ...

  4. Suzy找到实习了吗 Day23 | 二叉树最后一节!669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树

    669. 修剪二叉搜索树 题目 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保 ...

  5. Leetcode 538. 把二叉搜索树转换为累加树 C++

    Leetcode 538. 把二叉搜索树转换为累加树 题目 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加 ...

  6. LeetCode 538. 把二叉搜索树转换为累加树 | Python

    538. 把二叉搜索树转换为累加树 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/convert-bst-to-greater-tree 题目 给 ...

  7. LeetCode系列538—把二叉搜索树转换为累加树

    题意 538. 把二叉搜索树转换为累加树 题解 方法一:反序中序遍历 class Solution {private:int sum = 0; public:TreeNode* convertBST( ...

  8. leetcode 538. 把二叉搜索树转换为累加树 思考分析

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

  9. LeetCode 538. 把二叉搜索树转换为累加树(逆中序 根右左)

    文章目录 1. 题目 2. 逆中序(根右左,降序循环遍历) 1. 题目 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原 ...

最新文章

  1. 移动磁盘格式化了的资料寻回方法
  2. JStorm与Storm源码分析(六)--收集器 IOutputCollector 、OutputCollector
  3. 一条SQL语句实现二进制到十进制的转换
  4. Java多线程之线程中止
  5. PHP 底层的运行机制与原理
  6. python中RabbitMQ的使用(路由键模糊匹配)
  7. 一文理清Cookie、Session、Token
  8. C#l操作Exce知识点
  9. java之mybatis之缓存
  10. 16. jQuery - 获取并设置 CSS 类
  11. es like模糊匹配_Elastic search模糊匹配,精确匹配显示在前
  12. 新丰机器人_韶关新丰:智能巡检开启配电网运维新模式
  13. android平板太卡要怎么办,怎么解决平板电脑卡顿的问题?
  14. right here waitting
  15. 双碳目标下综合能源系统低碳运行优化调度Matlab程序
  16. Rabbitmq 基础
  17. C语言深度解剖读书笔记
  18. PUBG绿色玩家 看过来!
  19. Python max函数
  20. 【第3版emWin教程】第8章 emWin6.x的带OS方式移植(STM32H7之RGB接口)

热门文章

  1. vue的路由怎么换端口_vue.js如何更改默认端口号8080为指定端口的方法
  2. 7-2 玩转二叉树 (25分)_2-1!72分钟绝杀!西乙黑马踢疯了,西班牙人+武磊却迎利好...
  3. 框架下cookie的使用_aspnetcore自带cookie的认证期限分析
  4. 交换机虚拟化和堆叠的区别_交换机级联与堆叠有何区别
  5. for循环在c++中的用法_C ++中的循环
  6. stl标准模板库_如何在C ++ STL(标准模板库)中使用Pair
  7. Python字符串isidentifier()
  8. maven插件打包exec_Exec Maven插件–从Maven Build运行Java程序
  9. python属性_Python属性()
  10. knn约会_出色的在线约会预订系统应具备的5个功能