美文网首页
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