一、题目描述
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
例如:
1 | 输入: 原始二叉搜索树: |
注意:本题和 1038: https://leetcode-cn.com/problems/binary-search-tree-to-greater-sum-tree/ 相同
二、题解
1.递归
1.1 思路
- 二叉搜索树的中序遍历是递增数列,则逆中序遍历则是递减序列
- 声明一个累加值res = 0;
- 利用这一性质,对其进行逆中序遍历,开始使用累加值更新节点值
- 在遍历左子树前,要更新res的值
1.2 代码
1 | /** |
顺便把1038题也做了 :)