给出二叉搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node
的新值等于原树中大于或等于 node.val
的值之和。
解题思路:
其实就是相当于反中序遍历,然后当前结点的值加上之前遍历结点值的和。
java
public class title538 {
int sum=0; //sum为之前节点的和
public TreeNode convertBST(TreeNode root) {
traversal(root);
return root;
}
//反中序遍历
public void traversal(TreeNode root){
if(root==null) return;
//遍历顺序为 右,中,左
traversal(root.right);
root.val=root.val+sum;
sum=root.val;
traversal(root.left);
}
}