538. Convert BST to Greater Tree

Description

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

Solution

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * Traverse the binary tree with Depth-First Search (DFS) algorithm reversely
 * hence the summation of previous keys are greater than the current key
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var convertBST = function(root) {
    "use strict";
    let sum = 0;
    function dfs(node) {
        if (node) {
            dfs(node.right);
            sum += node.val;
            node.val = sum;
            dfs(node.left);
        }
    }
    dfs(root);
    return root;
};

results matching ""

    No results matching ""