Friday, March 6, 2020

538. Convert BST to Greater Tree --E

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

A:

-------------利用  BST -----------
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* convertBST(TreeNode* root) {
        int curSum =0;
        traversal(root, curSum);
        return root;
    }
    
private:
    void traversal(TreeNode * root,  int & S)
    {
        if(not root)
            return;        
        traversal(root->right, S);
        root->val += S;
        S = root->val;
        traversal(root->left, S);
    }
};


Mistakes:
   root->val  += S
  S+= root->val      这两句是错误的, 需要利用tmp来保存临时值


No comments:

Post a Comment