您的位置:首页 > 其它

Convert BST to Greater Tree

2017-04-27 19:50 309 查看
题目描述:

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

思路:
中序遍历

代码:

class Solution {

public:

    TreeNode* convertBST(TreeNode* root) {

        if (root==NULL)

            return NULL;

        vector<TreeNode*> res;

        inorder(root,res);

        int n=res.size();

        for (int i=n-2; i>=0; i--)

            (res[i])->val=(res[i])->val+(res[i+1])->val;

        return root;

    }

    

    void inorder(TreeNode* node, vector<TreeNode*>& res)

    {

        if (node==NULL)

            return;

        inorder(node->left,res);

        res.push_back(node);

        inorder(node->right,res);

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: