leetcode538把二叉搜索树转换为累加树

leetcode 538 Convert BST to Greater Tree

Posted by BY on September 21, 2020

前言

持续更新了

正文

问题来源

本问题来自leetcode上的538题。

问题描述

给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。

示例 1:

输入: 原始二叉搜索树:
              5
            /   \
           2     13

输出: 转换为累加树:
             18
            /   \
          20     13

分析:

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func convertBST(root *TreeNode) *TreeNode {
  sum := 0
  var dfs func(root *TreeNode)
  dfs = func(root *TreeNode) {
    if root != nil {
      dfs(root.Right)
      sum += root.Val
      root.Val = sum
      dfs(root.Left)
    }
  }
  dfs(root)
  return root
}

总结:

勤思考。

结语

不管怎么样好好加油。