538.把二叉搜索树转换为累加树

33 阅读1分钟

题目:
给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。
算法:

func convertBST(root *TreeNode) *TreeNode {
	nodeSum(root, 0)
	return root
}

func nodeSum(node *TreeNode, sum int) int {
	if node == nil {
		return sum
	}
	node.Val = node.Val + nodeSum(node.Right, sum)
	return nodeSum(node.Left, node.Val)
}