"""
since this is a BST, we can do a inorder traversal (inversed, from right to left),
during this process, track the sum and update the node.val
"""
class Solution:
    def convertBST(self, root):
        self.total = 0
        
        def helper(node):
            if not node: return
            helper(node.right)
            node.val += self.total
            self.total = node.val
            helper(node.left)
        
        helper(root)
        return root