538. 把二叉搜索树转换为累加树
题目
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-bst-to-greater-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
通过中序遍历(但先取右节点),先算右节点,再算根节点=右节点+根节点,最后算左节点=左+根+右
代码
下面展示一些 内联代码片
。
// A code block
var foo = 'bar';
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def convertBST(self, root: TreeNode) -> TreeNode:
stack,val,t = [], 0, root
while t or stack:
while t:
stack.append(t)
t = t.right
this = stack.pop()
val += this.val
this.val = val
t = this.left
return root