44
44
45
45
<!-- 这里可写通用的实现逻辑 -->
46
46
47
- 队列实现。
47
+ ** 方法一:BFS **
48
48
49
49
<!-- tabs:start -->
50
50
@@ -66,9 +66,8 @@ class Solution:
66
66
ans = []
67
67
q = deque([root])
68
68
while q:
69
- n = len (q)
70
69
t = []
71
- for _ in range (n ):
70
+ for _ in range (len (q) ):
72
71
node = q.popleft()
73
72
t.append(node.val)
74
73
if node.left:
@@ -101,16 +100,16 @@ class Solution:
101
100
*/
102
101
class Solution {
103
102
public List<List<Integer > > levelOrder (TreeNode root ) {
103
+ List<List<Integer > > ans = new ArrayList<> ();
104
104
if (root == null ) {
105
- return Collections . emptyList() ;
105
+ return ans ;
106
106
}
107
107
Deque<TreeNode > q = new ArrayDeque<> ();
108
108
q. offer(root);
109
- List<List<Integer > > ans = new ArrayList<> ();
110
109
while (! q. isEmpty()) {
111
110
List<Integer > t = new ArrayList<> ();
112
- for (int i = 0 , n = q. size(); i < n; ++ i ) {
113
- TreeNode node = q. pollFirst ();
111
+ for (int n = q. size(); n > 0 ; -- n ) {
112
+ TreeNode node = q. poll ();
114
113
t. add(node. val);
115
114
if (node. left != null ) {
116
115
q. offer(node. left);
@@ -143,13 +142,13 @@ class Solution {
143
142
class Solution {
144
143
public:
145
144
vector<vector<int >> levelOrder(TreeNode* root) {
146
- if (!root) return {};
147
145
vector<vector<int >> ans;
146
+ if (!root) return ans;
148
147
queue<TreeNode* > q{{root}};
149
148
while (!q.empty())
150
149
{
151
150
vector<int > t;
152
- for (int i = 0, n = q.size(); i < n; ++i )
151
+ for (int n = q.size(); n; --n )
153
152
{
154
153
auto node = q.front();
155
154
q.pop();
@@ -176,15 +175,14 @@ public:
176
175
* }
177
176
*/
178
177
func levelOrder(root *TreeNode) [][]int {
178
+ var ans [][]int
179
179
if root == nil {
180
- return nil
180
+ return ans
181
181
}
182
- var ans [][]int
183
182
var q = []*TreeNode{root}
184
183
for len(q) > 0 {
185
184
var t []int
186
- n := len(q)
187
- for i := 0; i < n; i++ {
185
+ for n := len(q); n > 0; n-- {
188
186
node := q[0]
189
187
q = q[1:]
190
188
t = append(t, node.Val)
@@ -217,14 +215,14 @@ func levelOrder(root *TreeNode) [][]int {
217
215
* @return {number[][]}
218
216
*/
219
217
var levelOrder = function (root ) {
218
+ let ans = [];
220
219
if (! root) {
221
- return [] ;
220
+ return ans ;
222
221
}
223
- let ans = [];
224
222
let q = [root];
225
223
while (q .length ) {
226
224
let t = [];
227
- for (let i = 0 , n = q .length ; i < n; ++ i ) {
225
+ for (let n = q .length ; n; -- n ) {
228
226
const node = q .shift ();
229
227
t .push (node .val );
230
228
if (node .left ) {
0 commit comments