Skip to content

Commit 99cea18

Browse files
committed
fix 0102: clean up redundant code
1 parent d798338 commit 99cea18

File tree

1 file changed

+28
-36
lines changed

1 file changed

+28
-36
lines changed

leetcode/0102.Binary-Tree-Level-Order-Traversal/102. Binary Tree Level Order Traversal.go

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,50 +21,42 @@ func levelOrder(root *TreeNode) [][]int {
2121
if root == nil {
2222
return [][]int{}
2323
}
24-
queue := []*TreeNode{}
25-
queue = append(queue, root)
26-
curNum, nextLevelNum, res, tmp := 1, 0, [][]int{}, []int{}
27-
for len(queue) != 0 {
28-
if curNum > 0 {
29-
node := queue[0]
30-
if node.Left != nil {
31-
queue = append(queue, node.Left)
32-
nextLevelNum++
24+
queue := []*TreeNode{root}
25+
res := make([][]int, 0)
26+
for len(queue) > 0 {
27+
l := len(queue)
28+
tmp := make([]int, 0, l)
29+
for i := 0; i < l; i++ {
30+
if queue[i].Left != nil {
31+
queue = append(queue, queue[i].Left)
3332
}
34-
if node.Right != nil {
35-
queue = append(queue, node.Right)
36-
nextLevelNum++
33+
if queue[i].Right != nil {
34+
queue = append(queue, queue[i].Right)
3735
}
38-
curNum--
39-
tmp = append(tmp, node.Val)
40-
queue = queue[1:]
41-
}
42-
if curNum == 0 {
43-
res = append(res, tmp)
44-
curNum = nextLevelNum
45-
nextLevelNum = 0
46-
tmp = []int{}
36+
tmp = append(tmp, queue[i].Val)
4737
}
38+
queue = queue[l:]
39+
res = append(res, tmp)
4840
}
4941
return res
5042
}
5143

5244
// 解法二 DFS
5345
func levelOrder1(root *TreeNode) [][]int {
54-
levels := [][]int{}
55-
dfsLevel(root, -1, &levels)
56-
return levels
57-
}
58-
59-
func dfsLevel(node *TreeNode, level int, res *[][]int) {
60-
if node == nil {
61-
return
62-
}
63-
currLevel := level + 1
64-
for len(*res) <= currLevel {
65-
*res = append(*res, []int{})
46+
var res [][]int
47+
var dfsLevel func(node *TreeNode, level int)
48+
dfsLevel = func(node *TreeNode, level int) {
49+
if node == nil {
50+
return
51+
}
52+
if len(res) == level {
53+
res = append(res, []int{node.Val})
54+
} else {
55+
res[level] = append(res[level], node.Val)
56+
}
57+
dfsLevel(node.Left, level+1)
58+
dfsLevel(node.Right, level+1)
6659
}
67-
(*res)[currLevel] = append((*res)[currLevel], node.Val)
68-
dfsLevel(node.Left, currLevel, res)
69-
dfsLevel(node.Right, currLevel, res)
60+
dfsLevel(root, 0)
61+
return res
7062
}

0 commit comments

Comments
 (0)