Skip to content

Commit 1fbce41

Browse files
Create 102. 二叉树的层序遍历.md
1 parent 9837543 commit 1fbce41

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#### 102. 二叉树的层序遍历
2+
3+
难度:中等
4+
5+
---
6+
7+
给你二叉树的根节点 `root` ,返回其节点值的 **层序遍历** 。 (即逐层地,从左到右访问所有节点)。
8+
9+
**示例 1:**
10+
11+
![](https://assets.leetcode.com/uploads/2021/02/19/tree1.jpg)
12+
```
13+
输入:root = [3,9,20,null,null,15,7]
14+
输出:[[3],[9,20],[15,7]]
15+
```
16+
17+
**示例 2:**
18+
19+
```
20+
输入:root = [1]
21+
输出:[[1]]
22+
```
23+
24+
**示例 3:**
25+
26+
```
27+
输入:root = []
28+
输出:[]
29+
```
30+
31+
**提示:**
32+
33+
* 树中节点数目在范围 `[0, 2000]`
34+
* `-1000 <= Node.val <= 1000`
35+
36+
---
37+
38+
队列:每一层的节点从左往右依次存到队列中,每次都取出当前层的节点值并把左右非空子节点再存到队列中即可。
39+
40+
```Go
41+
/**
42+
* Definition for a binary tree node.
43+
* type TreeNode struct {
44+
* Val int
45+
* Left *TreeNode
46+
* Right *TreeNode
47+
* }
48+
*/
49+
func levelOrder(root *TreeNode) [][]int {
50+
if root == nil {
51+
return nil
52+
}
53+
res := make([][]int, 0)
54+
queue := []*TreeNode{root}
55+
depth := 0
56+
for len(queue) != 0 {
57+
res = append(res, []int{})
58+
size := len(queue)
59+
for i := 0; i < size; i++ {
60+
node := queue[i]
61+
res[depth] = append(res[depth], node.Val)
62+
if node.Left != nil {
63+
queue = append(queue, node.Left)
64+
}
65+
if node.Right != nil {
66+
queue = append(queue, node.Right)
67+
}
68+
}
69+
queue = queue[size:]
70+
depth += 1
71+
}
72+
return res
73+
}
74+
```

0 commit comments

Comments
 (0)