题目
5
/ \
2 13
变为
18
/ \
20 13
思路
BST中序遍历[2,5,13]
逆中序遍历[13,5,2]
进行累加[13,5+13,5+13+2]
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int sum = 0;//记录所有遍历的节点的和(在函数体外初始化!!不然放在函数体内就每次都等于0了)
public TreeNode convertBST(TreeNode root) {
//逆中序遍历(右-根-左)
if(root != null){
convertBST(root.right);
sum += root.val;
root.val = sum;//这两步相当于之前遍历的节点的和累加,然后赋值给当前节点
convertBST(root.left);
}
return root;
}
}