102. 二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000] 内
  • -1000 <= Node.val <= 1000

一定记得函数要先判断节点是否为 nil

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
29
30
31
32
33
34
35
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
if root == nil {
return [][]int{}
}
var stack []*TreeNode

stack = append(stack, root)
ans := [][]int{}

for i:=0; len(stack)>0; i++ {
ans = append(ans, []int{})
nextstack := []*TreeNode{}
for j:=0; j<len(stack); j++ {
nod := stack[j]
ans[i] = append(ans[i], nod.Val)
if nod.Left != nil {
nextstack = append(nextstack, nod.Left)
}
if nod.Right != nil {
nextstack = append(nextstack, nod.Right)
}
}
stack = nextstack
}

return ans
}