题意理解
更新二叉搜索树的每个结点为原来的节点值加上所有大于它的节点值的和。
问题分析
二叉树
深度遍历
其他
链接
TreeNode* convertBST(TreeNode* root) {
int sum = 0;
helper(root, sum); //辅助函数
return root;
}
void helper(TreeNode* root, int &sum) //参数1:根节点,参数2:右子树和
{
if (!root) //空树,返回
return;
helper(root -> right, sum); //计算右子树累计和
sum += root -> val; //累计和增加当前根结点值
root -> val = sum; //根结点值更新为累计和
helper(root -> left, sum); //计算左子树累计和
}