- 思路
把中序遍历的顺序换一下,改成先右再左,这样用一个参数记录每次计算完的值,遍历的时候每次加上参数上一个记录的值就行
void add(struct TreeNode* root, int* pre){
if(root==NULL)
return;
add(root->right, pre);
if(*pre != 0)
root->val = root->val + *pre;
*pre = root->val;
add(root->left, pre);
}
struct TreeNode* convertBST(struct TreeNode* root){
int *pre = (int *)malloc(sizeof(int));
*pre = 0;
add(root, pre);
return root;
}