leetcode 144. 二叉树的前序遍历

144. 二叉树的前序遍历 - 力扣(Leetcode)

记得提前判断是否为空,否则会报找不到内存指针的错误

注意:这里和层序遍历不一样,这里不用使用中间变量lens := stack.len() 来遍历每层,虽然增加了每层遍历依然可以通过,但是没有必要。只有在层序遍历的时候才需要记录每层的信息。leetcode 102. 二叉树的层序遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func preorderTraversal(root *TreeNode) []int {
stack := list.New()
res := []int{}

if root == nil{//防止为空
return res
}
stack.PushBack(root)
for stack.Len() > 0 {
top := stack.Remove(stack.Back()).(*TreeNode)
res = append(res,top.Val)
if top.Right !=nil {
stack.PushBack(top.Right)
}
if top.Left !=nil {
stack.PushBack(top.Left)
}
}
return res
}

leetcode 144. 二叉树的前序遍历
https://leiqi.top/2023-05-23-62bd8ef029a5.html
作者
Lei Qi
发布于
2023年5月23日
许可协议