538. Convert BST to Greater Tree

Posted bernieloveslife

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了538. Convert BST to Greater Tree相关的知识,希望对你有一定的参考价值。

Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys greater than the original key in BST.

Example:

Input: The root of a Binary Search Tree like this:

              5
            /              2     13

Output: The root of a Greater Tree like this:

             18
            /             20     13
# 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):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        a = []
        if root is None:
            return root
        def inorder(root):
            if root.left:
                inorder(root.left)
            a.append(root.val)
            if root.right:
                inorder(root.right)
        inorder(root)
        for i in range(len(a)-2,-1,-1):
            a[i] += a[i+1]
        pos = 0
        def change(root):
            nonlocal pos
            if root.left:
                change(root.left)
            root.val = a[pos]
            pos += 1
            if root.right:
                change(root.right)
        change(root)
        return root

以上是关于538. Convert BST to Greater Tree的主要内容,如果未能解决你的问题,请参考以下文章

538. Convert BST to Greater Tree

538. Convert BST to Greater Tree

538. Convert BST to Greater Tree

538. Convert BST to Greater Tree

Leetcode 538. Convert BST to Greater Tree

[LeetCode] 538. Convert BST to Greater Tree