leetcode力扣 94 144 145 二叉树的前中后序遍历 go实现

记录一下leetcode刷题,大牛请绕道

思路

递归

非递归

代码

递归

前序遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var res []int
func preorderTraversal(root *TreeNode) []int {
res = []int{}
recursion(root)
return res
}

func recursion(root *TreeNode) {
if root == nil {
return
}
res = append(res, root.Val)
recursion(root.Left)
recursion(root.Right)
}

中序遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var res []int
func inorderTraversal(root *TreeNode) []int {
res = []int{}
recursion(root)
return res
}

func recursion(root *TreeNode) {
if root == nil {
return
}
recursion(root.Left)
res = append(res, root.Val)
recursion(root.Right)
}

后序遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var res []int
func postorderTraversal(root *TreeNode) []int {
res = []int{}
recursion(root)
return res
}

func recursion(root *TreeNode) {
if root == nil {
return
}
recursion(root.Left)
recursion(root.Right)
res = append(res, root.Val)
}

非递归

遇到的坑

昨天刚碰到,我用的是golang,在回溯时需要一个全局变量result。。。。后来发现是全局变量的问题,原因如下:

leetcode的评测模式是一个程序,也就是某些变量只会初始化一次,比如我这边用的全局变量result。导致该容器(result)会保留上次运行的答案。
leetcode运行模式只会运行一次,所以没上述问题。
我当时的解决方案是将全局变量在它给出的函数中又清空一遍

所以题主可以看看是代码中是否有类似于全局变量的影响了评测结果。

作者:GuoYuefei
链接:https://leetcode-cn.com/circle/discuss/lhevWR/view/UZtlKY/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文标题:leetcode力扣 94 144 145 二叉树的前中后序遍历 go实现

文章作者:xianyu123

发布时间:2022年01月19日 - 13:37

最后更新:2022年01月25日 - 15:11

原始链接:http://0clickjacking0.github.io/2022/01/19/leetcode力扣-94-144-145-二叉树的前中后序遍历-go实现/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------    本文结束  感谢您的阅读    -------------