Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
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

My code:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def convertBST(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        if root==None:
            return None
        self.convertBST1(root,0)
        return root
    def convertBST1(self,root,tmp_sum):
        if root==None:
            return 0
        right_sum=0
        if root.right!=None:
            right_sum=self.convertBST1(root.right,tmp_sum)
        
            root.val+=right_sum
        else:
            root.val+=tmp_sum
        left_sum=root.val
        if root.left!=None:
            left_sum=self.convertBST1(root.left,root.val)
        return left_sum

Solution: https://leetcode.com/problems/convert-bst-to-greater-tree/