美文网首页
538. Convert BST to Greater Tree

538. Convert BST to Greater Tree

作者: matrxyz | 来源:发表于2018-01-13 16:26 被阅读0次

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:

思路:
将中序遍历左-根-右的顺序逆过来,变成右-根-左的顺序,这样就可以反向计算累加和sum,同时更新结点值.
Time Complexity: O(N) Space Complexity: O(N)

Solution Code:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {

    int sum = 0;
    
    public TreeNode convertBST(TreeNode root) {
        convert(root);
        return root;
    }
    
    public void convert(TreeNode cur) {
        if (cur == null) return;
        convert(cur.right);
        cur.val += sum;
        sum = cur.val;
        convert(cur.left);
    }
    
}

相关文章

网友评论

      本文标题:538. Convert BST to Greater Tree

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