从二叉搜索树到更大和树:BST 转化累加树

1038. 从二叉搜索树到更大和树

目录

思路

  • 思路:
    • 先定义一个变量 sum = 0
    • 右 → 左:
      • 先遍历右节点,再遍历左节点
    • 为什么不需要 sum -= root.val;
      • 每个节点的新值就是要等于所有大于等于它的节点值之和
      • sum 在遍历过程中自然累加了所有较大的值
        • 如下图:
          • 图片&文件

代码

/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var bstToGst = function (root) {
  let sum = 0;
  function traverse(root) {
    if (!root) return;
    // 先把右节点遍历完
    traverse(root.right);
    sum += root.val;
    root.val = sum;
    traverse(root.left);
  }
  traverse(root);
  return root;
};

相关题目