美文网首页
Convert_BST_to_Greater_Tree

Convert_BST_to_Greater_Tree

作者: 敲一手烂代码 | 来源:发表于2018-01-08 14:18 被阅读55次
/*
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

      本文链接:https://www.haomeiwen.com/subject/tmlbnxtx.html