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.

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
 
 */
class Convert_BST_to_Greater_Tree: NSObject {
    var sum = 0
    func convertBST(_ root: TreeNode?) -> TreeNode? {
        convert(root)
        return root
    }
    
    func convert(_ root: TreeNode?) {
        if root == nil {
            return
        } else {
            convert(root?.right)
            root!.val += sum;
            sum = root!.val;
            convert(root?.left)
        }
    }
}

你可能感兴趣的:(Convert_BST_to_Greater_Tree)