给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node
的新值 = 原树中大于或等于 node.val
的值之和。
方法一:递归
class Solution{int sum = 0;public TreeNode convertBST(TreeNode root){// 中序遍历是从小到大的// 反向中序遍历if(root != null){// 这条递归语句让到达最右的节点(不一定是最下的节点)// (最右的节点就是最大的,我们的sum从最大的结点开始)convertBST(root.right);sum += root.val;root.val = sum;// 这条递归必须写在最后,因为递归左树时,我们也要按照从大到小的顺序// 每递归一个左树,必须先给他赋完值,才能继续他的左子树convertBST(root.left);}return root;}
}