Skip to content

Commit d85b7a1

Browse files
committed
feat: update solutions to lc problems: No.0102,0103
No.0102.Binary Tree Level Order Traversal No.0103.Binary Tree Zigzag Level Order Traversal
1 parent aace0f8 commit d85b7a1

File tree

14 files changed

+667
-271
lines changed

14 files changed

+667
-271
lines changed

solution/0100-0199/0102.Binary Tree Level Order Traversal/README.md

+126-37
Original file line numberDiff line numberDiff line change
@@ -47,30 +47,28 @@
4747
```python
4848
# Definition for a binary tree node.
4949
# class TreeNode:
50-
# def __init__(self, x):
51-
# self.val = x
52-
# self.left = None
53-
# self.right = None
54-
50+
# def __init__(self, val=0, left=None, right=None):
51+
# self.val = val
52+
# self.left = left
53+
# self.right = right
5554
class Solution:
5655
def levelOrder(self, root: TreeNode) -> List[List[int]]:
5756
if root is None:
5857
return []
59-
res = []
60-
q = []
61-
q.append(root)
58+
ans = []
59+
q = deque([root])
6260
while q:
63-
size = len(q)
61+
n = len(q)
6462
t = []
65-
for _ in range(size):
66-
node = q.pop(0)
67-
if node.left is not None:
63+
for _ in range(n):
64+
node = q.popleft()
65+
t.append(node.val)
66+
if node.left:
6867
q.append(node.left)
69-
if node.right is not None:
68+
if node.right:
7069
q.append(node.right)
71-
t.append(node.val)
72-
res.append(t)
73-
return res
70+
ans.append(t)
71+
return ans
7472
```
7573

7674
### **Java**
@@ -84,27 +82,38 @@ class Solution:
8482
* int val;
8583
* TreeNode left;
8684
* TreeNode right;
87-
* TreeNode(int x) { val = x; }
85+
* TreeNode() {}
86+
* TreeNode(int val) { this.val = val; }
87+
* TreeNode(int val, TreeNode left, TreeNode right) {
88+
* this.val = val;
89+
* this.left = left;
90+
* this.right = right;
91+
* }
8892
* }
8993
*/
9094
class Solution {
9195
public List<List<Integer>> levelOrder(TreeNode root) {
92-
if (root == null) return Collections.emptyList();
96+
if (root == null) {
97+
return Collections.emptyList();
98+
}
9399
Deque<TreeNode> q = new ArrayDeque<>();
94100
q.offer(root);
95-
List<List<Integer>> res = new ArrayList<>();
101+
List<List<Integer>> ans = new ArrayList<>();
96102
while (!q.isEmpty()) {
97-
int size = q.size();
98103
List<Integer> t = new ArrayList<>();
99-
while (size-- > 0) {
100-
TreeNode node = q.poll();
104+
for (int i = 0, n = q.size(); i < n; ++i) {
105+
TreeNode node = q.pollFirst();
101106
t.add(node.val);
102-
if (node.left != null) q.offer(node.left);
103-
if (node.right != null) q.offer(node.right);
107+
if (node.left != null) {
108+
q.offer(node.left);
109+
}
110+
if (node.right != null) {
111+
q.offer(node.right);
112+
}
104113
}
105-
res.add(t);
114+
ans.add(t);
106115
}
107-
return res;
116+
return ans;
108117
}
109118
}
110119
```
@@ -118,28 +127,108 @@ class Solution {
118127
* int val;
119128
* TreeNode *left;
120129
* TreeNode *right;
121-
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
130+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
131+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
132+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
122133
* };
123134
*/
124135
class Solution {
125136
public:
126137
vector<vector<int>> levelOrder(TreeNode* root) {
127138
if (!root) return {};
128-
vector<vector<int>> res;
139+
vector<vector<int>> ans;
129140
queue<TreeNode*> q{{root}};
130-
while (!q.empty()) {
131-
vector<int> oneLevel;
132-
for (int i = q.size(); i > 0; --i) {
133-
TreeNode* t = q.front();
141+
while (!q.empty())
142+
{
143+
vector<int> t;
144+
for (int i = 0, n = q.size(); i < n; ++i)
145+
{
146+
auto node = q.front();
134147
q.pop();
135-
oneLevel.push_back(t->val);
136-
if (t->left) q.push(t->left);
137-
if (t->right) q.push(t->right);
148+
t.push_back(node->val);
149+
if (node->left) q.push(node->left);
150+
if (node->right) q.push(node->right);
151+
}
152+
ans.push_back(t);
153+
}
154+
return ans;
155+
}
156+
};
157+
```
158+
159+
### **Go**
160+
161+
```go
162+
/**
163+
* Definition for a binary tree node.
164+
* type TreeNode struct {
165+
* Val int
166+
* Left *TreeNode
167+
* Right *TreeNode
168+
* }
169+
*/
170+
func levelOrder(root *TreeNode) [][]int {
171+
if root == nil {
172+
return nil
173+
}
174+
var ans [][]int
175+
var q = []*TreeNode{root}
176+
for len(q) > 0 {
177+
var t []int
178+
n := len(q)
179+
for i := 0; i < n; i++ {
180+
node := q[0]
181+
q = q[1:]
182+
t = append(t, node.Val)
183+
if node.Left != nil {
184+
q = append(q, node.Left)
185+
}
186+
if node.Right != nil {
187+
q = append(q, node.Right)
188+
}
189+
}
190+
ans = append(ans, t)
191+
}
192+
return ans
193+
}
194+
```
195+
196+
### **JavaScript**
197+
198+
```js
199+
/**
200+
* Definition for a binary tree node.
201+
* function TreeNode(val, left, right) {
202+
* this.val = (val===undefined ? 0 : val)
203+
* this.left = (left===undefined ? null : left)
204+
* this.right = (right===undefined ? null : right)
205+
* }
206+
*/
207+
/**
208+
* @param {TreeNode} root
209+
* @return {number[][]}
210+
*/
211+
var levelOrder = function(root) {
212+
if (!root) {
213+
return [];
214+
}
215+
let ans = [];
216+
let q = [root];
217+
while (q.length) {
218+
let t = [];
219+
for (let i = 0, n = q.length; i < n; ++i) {
220+
const node = q.shift();
221+
t.push(node.val);
222+
if (node.left) {
223+
q.push(node.left);
224+
}
225+
if (node.right) {
226+
q.push(node.right);
138227
}
139-
res.push_back(oneLevel);
140228
}
141-
return res;
229+
ans.push(t);
142230
}
231+
return ans;
143232
};
144233
```
145234

0 commit comments

Comments
 (0)