给定一个二叉搜索树,树上的节点各不相同,请你将其修改为累加树,使每个节点的值变成原树中更大节点之和。
二叉搜索树的定义是任一节点的左子树的任意节点的值小于根节点的值,右子树则相反。
数据范围:树上节点数满足 ,节点上的值满足 。
样例图1:
样例图2:
package main import _"fmt" import . "nc_tools" /* * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return TreeNode类 */ var sum int func convertBST( root *TreeNode ) *TreeNode { arr:=order(root) for i,x:=range arr{ ori:=x.Val arr[i].Val=sum sum-=ori } return root } func order(root *TreeNode)[]*TreeNode{ if root==nil{ return nil } ans:=[]*TreeNode{} sum+=root.Val ans=append(ans,order(root.Left)...) ans=append(ans,root) ans=append(ans,order(root.Right)...) return ans }