File tree 6 files changed +188
-0
lines changed
面试题32 - III. 从上到下打印二叉树 III
6 files changed +188
-0
lines changed Original file line number Diff line number Diff line change @@ -122,7 +122,36 @@ var levelOrder = function(root) {
122
122
};
123
123
```
124
124
125
+ ### Go
126
+
127
+ ``` go
128
+ func levelOrder (root *TreeNode ) []int {
129
+ if root == nil {
130
+ return []int {}
131
+ }
132
+ q := []*TreeNode{}
133
+ q = append (q,root)
134
+ // 层序遍历,用队列,遍历到谁,就把谁的左右结点加入队列
135
+ res := []int {}
136
+ for len (q) != 0 {
137
+ tmp := q[0 ]
138
+ q = q[1 :]
139
+ res = append (res,tmp.Val )
140
+ if tmp.Left != nil {
141
+ q = append (q,tmp.Left )
142
+ }
143
+ if tmp.Right != nil {
144
+ q = append (q,tmp.Right )
145
+ }
146
+ }
147
+ return res
148
+ }
149
+ ```
150
+
151
+
152
+
125
153
### ...
154
+
126
155
```
127
156
128
157
```
Original file line number Diff line number Diff line change
1
+ func levelOrder (root * TreeNode ) []int {
2
+ if root == nil {
3
+ return []int {}
4
+ }
5
+ q := []* TreeNode {}
6
+ q = append (q ,root )
7
+ //层序遍历,用队列,遍历到谁,就把谁的左右结点加入队列
8
+ res := []int {}
9
+ for len (q ) != 0 {
10
+ tmp := q [0 ]
11
+ q = q [1 :]
12
+ res = append (res ,tmp .Val )
13
+ if tmp .Left != nil {
14
+ q = append (q ,tmp .Left )
15
+ }
16
+ if tmp .Right != nil {
17
+ q = append (q ,tmp .Right )
18
+ }
19
+ }
20
+ return res
21
+ }
Original file line number Diff line number Diff line change @@ -142,7 +142,42 @@ var levelOrder = function(root) {
142
142
};
143
143
```
144
144
145
+ ### Go
146
+
147
+ ``` go
148
+ func levelOrder (root *TreeNode ) [][]int {
149
+ if root == nil {
150
+ return nil
151
+ }
152
+ res := [][]int {}
153
+ queue := []*TreeNode{}
154
+ queue = append (queue,root)
155
+ for len (queue) != 0 {
156
+ size := len (queue)
157
+ ans := []int {}
158
+ // 利用一个变量记录每层大小
159
+ for size > 0 {
160
+ cur := queue[0 ]
161
+ ans = append (ans, cur.Val )
162
+ queue = queue[1 :]
163
+ size--
164
+ if cur.Left != nil {
165
+ queue = append (queue, cur.Left )
166
+ }
167
+ if cur.Right != nil {
168
+ queue = append (queue, cur.Right )
169
+ }
170
+ }
171
+ res = append (res, ans)
172
+ }
173
+ return res
174
+ }
175
+ ```
176
+
177
+
178
+
145
179
### ...
180
+
146
181
```
147
182
148
183
```
Original file line number Diff line number Diff line change
1
+ func levelOrder (root * TreeNode ) [][]int {
2
+ if root == nil {
3
+ return nil
4
+ }
5
+ res := [][]int {}
6
+ queue := []* TreeNode {}
7
+ queue = append (queue ,root )
8
+ for len (queue ) != 0 {
9
+ size := len (queue )
10
+ ans := []int {}
11
+ //利用一个变量记录每层大小
12
+ for size > 0 {
13
+ cur := queue [0 ]
14
+ ans = append (ans , cur .Val )
15
+ queue = queue [1 :]
16
+ size --
17
+ if cur .Left != nil {
18
+ queue = append (queue , cur .Left )
19
+ }
20
+ if cur .Right != nil {
21
+ queue = append (queue , cur .Right )
22
+ }
23
+ }
24
+ res = append (res , ans )
25
+ }
26
+ return res
27
+ }
Original file line number Diff line number Diff line change @@ -157,7 +157,49 @@ var levelOrder = function(root) {
157
157
};
158
158
```
159
159
160
+ ### Go
161
+
162
+ ``` go
163
+ func levelOrder (root *TreeNode ) [][]int {
164
+ if root == nil {
165
+ return nil
166
+ }
167
+ res := [][]int {}
168
+ queue := []*TreeNode{}
169
+ queue = append (queue,root)
170
+ level := 0
171
+ for len (queue) != 0 {
172
+ size := len (queue)
173
+ ans := []int {}
174
+ // size记录每层大小,level记录层数
175
+ for size > 0 {
176
+ cur := queue[0 ]
177
+ if level & 1 == 0 {
178
+ ans = append (ans, cur.Val )
179
+ } else {
180
+ ans = append ([]int {cur.Val },ans...)
181
+ }
182
+
183
+ queue = queue[1 :]
184
+ size--
185
+ if cur.Left != nil {
186
+ queue = append (queue, cur.Left )
187
+ }
188
+ if cur.Right != nil {
189
+ queue = append (queue, cur.Right )
190
+ }
191
+ }
192
+ level++
193
+ res = append (res, ans)
194
+ }
195
+ return res
196
+ }
197
+ ```
198
+
199
+
200
+
160
201
### ...
202
+
161
203
```
162
204
163
205
```
Original file line number Diff line number Diff line change
1
+ func levelOrder (root * TreeNode ) [][]int {
2
+ if root == nil {
3
+ return nil
4
+ }
5
+ res := [][]int {}
6
+ queue := []* TreeNode {}
7
+ queue = append (queue ,root )
8
+ level := 0
9
+ for len (queue ) != 0 {
10
+ size := len (queue )
11
+ ans := []int {}
12
+ //size记录每层大小,level记录层数
13
+ for size > 0 {
14
+ cur := queue [0 ]
15
+ if level & 1 == 0 {
16
+ ans = append (ans , cur .Val )
17
+ } else {
18
+ ans = append ([]int {cur .Val },ans ... )
19
+ }
20
+
21
+ queue = queue [1 :]
22
+ size --
23
+ if cur .Left != nil {
24
+ queue = append (queue , cur .Left )
25
+ }
26
+ if cur .Right != nil {
27
+ queue = append (queue , cur .Right )
28
+ }
29
+ }
30
+ level ++
31
+ res = append (res , ans )
32
+ }
33
+ return res
34
+ }
You can’t perform that action at this time.
0 commit comments