题目:
题解:
根据二叉搜索树的特点,左节点 < 根 < 右节点,所以累加树中每个节点的值应该等于右边所有节点的和,我们只需要从右向左遍历,依次累计节点和,再创建新树。
class Solution {
public int sum = 0;
public TreeNode convertBST(TreeNode root) {
if (root == null) {
return null;
}
TreeNode right = convertBST(root.right);
sum += root.val;
TreeNode newNode = new TreeNode(sum);
newNode.left = convertBST(root.left);
newNode.right = right;
return newNode;
}
}
时间复杂度:O(n)