刷题前唠嗑
LeetCode?启动!!!
题目:从二叉搜索树到更大和树
题目链接:1038. 从二叉搜索树到更大和树
题目描述
代码与解题思路
这道题题目描述可能比较模糊,直接看题目给的样例就行,不管他本身是一棵什么树,直接从他的最右节点开始看:
然后你发现他的节点值和蓝字的值是一样的,节点的值是树当前的值,蓝字的值是我们需要把数节点值变成蓝字,可以看到最右节点是 8,蓝字也是 8,往上走,蓝字是 15,8+7=15,接着 6+15=21,5+21=26,发现没有,其实就是将二叉树的节点值进行累加,按照:“右根左” 的顺序:
func bstToGst(root *TreeNode) *TreeNode {
sum := 0
var convert func(*TreeNode)
convert = func(node *TreeNode) {
if node == nil {
return
}
convert(node.Right) // 右
sum += node.Val // 累加
node.Val = sum // 根
convert(node.Left) // 左
}
convert(root)
return root
}
我们的代码就是按照这个顺序进行遍历操作的。
结语
主要是把题目给看明白就行了