Description
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
例如:
输入: 原始二叉搜索树:
5
/ \
2 13
输出: 转换为累加树:
18
/ \
20 13
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-bst-to-greater-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Solution
题解:将中序遍历的左根右
变为右根左
即可。
class Solution:
def convertBST(self, root: TreeNode) -> TreeNode:
if not root: return None
self.tmp = 0
def inOrder(root):
if not root: return
inOrder(root.right)
self.tmp += root.val
root.val = self.tmp
inOrder(root.left)
inOrder(root)
return root