Skip to content
This repository was archived by the owner on Sep 20, 2023. It is now read-only.

Commit 303adb6

Browse files
aQuaaQua
aQua
authored and
aQua
committed
103 finish
1 parent 82a1da0 commit 303adb6

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

Algorithms/0103.binary-tree-zigzag-level-order-traversal/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,24 @@
33
## 题目
44
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).
55

6-
76
For example:
87
Given binary tree [3,9,20,null,null,15,7],
8+
```
99
3
1010
/ \
1111
9 20
1212
/ \
1313
15 7
14-
15-
14+
```
1615

1716
return its zigzag level order traversal as:
17+
```
1818
[
1919
[3],
2020
[20,9],
2121
[15,7]
2222
]
23-
23+
```
2424
## 解题思路
2525

2626
见程序注释

Algorithms/0103.binary-tree-zigzag-level-order-traversal/binary-tree-zigzag-level-order-traversal.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,25 @@ type TreeNode = kit.TreeNode
88

99
func zigzagLevelOrder(root *TreeNode) [][]int {
1010
res := [][]int{}
11-
var dfs func(*TreeNode, int)
1211

12+
var dfs func(*TreeNode, int)
1313
dfs = func(root *TreeNode, level int) {
1414
if root == nil {
1515
return
1616
}
17-
1817
// 出现了新的 level
1918
if level >= len(res) {
2019
res = append(res, []int{})
2120
}
21+
// 与 102 题相比,level 的奇偶不同,append 会不同。
2222
if level%2 == 0 {
2323
res[level] = append(res[level], root.Val)
2424
} else {
25-
res[level] = append([]int{root.Val}, res[level]...)
25+
temp := make([]int , len(res[level])+1)
26+
temp[0] = root.Val
27+
copy(temp[1:], res[level])
28+
res[level] = temp
2629
}
27-
2830
dfs(root.Left, level+1)
2931
dfs(root.Right, level+1)
3032
}

0 commit comments

Comments
 (0)