问题描述:
给定一个二叉搜索树,把他转为累加树,使得每个节点的值都是原来的节点值加上所有大于它的节点值之和。
问题分析:
注意二叉搜索树具有明显的特征是:左子树的值比右子树上的值要小。
class Solution{
private:
int val =0;
public:
TreeNode* convertBST(TreeNode* root)
{
if(root==nullptr) return root;
convertBST(root->right); //先计算右子树的值
val+=root->val;
root->val = val;
convertBST(root->left); //再计算左子树
return root;
}
};