update 0538.把二叉搜索树转换为累加树:替换 go 代码

This commit is contained in:
Yuhao Ju
2022-12-05 19:13:43 +08:00
committed by GitHub
parent 57c41cd670
commit c03d5310a7

View File

@ -45,11 +45,11 @@
# 思路
一看到累加树,相信很多小伙伴都会疑惑:如何累加?遇到一个节点,然后遍历其他节点累加?怎么一想这么麻烦呢。
一看到累加树,相信很多小伙伴都会疑惑:如何累加?遇到一个节点,然后遍历其他节点累加?怎么一想这么麻烦呢。
然后再发现这是一棵二叉搜索树,二叉搜索树啊,这是有序的啊。
那么有序的元素如求累加呢?
那么有序的元素如求累加呢?
**其实这就是一棵树,大家可能看起来有点别扭,换一个角度来看,这就是一个有序数组[2, 5, 13],求从后到前的累加数组,也就是[20, 18, 13],是不是感觉这就简单了。**
@ -233,23 +233,23 @@ class Solution:
## Go
弄一个sum暂存其和值
```go
//右中左
func bstToGst(root *TreeNode) *TreeNode {
var sum int
RightMLeft(root,&sum)
return root
}
func RightMLeft(root *TreeNode,sum *int) *TreeNode {
if root==nil{return nil}//终止条件,遇到空节点就返回
RightMLeft(root.Right,sum)//先遍历右边
temp:=*sum//暂存总和值
*sum+=root.Val//将总和值变更
root.Val+=temp//更新节点值
RightMLeft(root.Left,sum)//遍历左节点
var pre int
func convertBST(root *TreeNode) *TreeNode {
pre = 0
traversal(root)
return root
}
func traversal(cur *TreeNode) {
if cur == nil {
return
}
traversal(cur.Right)
cur.Val += pre
pre = cur.Val
traversal(cur.Left)
}
```
## JavaScript