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)
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容