Skip to content

Commit ce2c410

Browse files
committed
feat: add solutions to lc problem: No.1993
No.1993.Operations on Tree
1 parent 1a813d9 commit ce2c410

File tree

13 files changed

+791
-46
lines changed

13 files changed

+791
-46
lines changed

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

+14-16
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
<!-- 这里可写通用的实现逻辑 -->
4646

47-
队列实现。
47+
**方法一:BFS**
4848

4949
<!-- tabs:start -->
5050

@@ -66,9 +66,8 @@ class Solution:
6666
ans = []
6767
q = deque([root])
6868
while q:
69-
n = len(q)
7069
t = []
71-
for _ in range(n):
70+
for _ in range(len(q)):
7271
node = q.popleft()
7372
t.append(node.val)
7473
if node.left:
@@ -101,16 +100,16 @@ class Solution:
101100
*/
102101
class Solution {
103102
public List<List<Integer>> levelOrder(TreeNode root) {
103+
List<List<Integer>> ans = new ArrayList<>();
104104
if (root == null) {
105-
return Collections.emptyList();
105+
return ans;
106106
}
107107
Deque<TreeNode> q = new ArrayDeque<>();
108108
q.offer(root);
109-
List<List<Integer>> ans = new ArrayList<>();
110109
while (!q.isEmpty()) {
111110
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();
114113
t.add(node.val);
115114
if (node.left != null) {
116115
q.offer(node.left);
@@ -143,13 +142,13 @@ class Solution {
143142
class Solution {
144143
public:
145144
vector<vector<int>> levelOrder(TreeNode* root) {
146-
if (!root) return {};
147145
vector<vector<int>> ans;
146+
if (!root) return ans;
148147
queue<TreeNode*> q{{root}};
149148
while (!q.empty())
150149
{
151150
vector<int> t;
152-
for (int i = 0, n = q.size(); i < n; ++i)
151+
for (int n = q.size(); n; --n)
153152
{
154153
auto node = q.front();
155154
q.pop();
@@ -176,15 +175,14 @@ public:
176175
* }
177176
*/
178177
func levelOrder(root *TreeNode) [][]int {
178+
var ans [][]int
179179
if root == nil {
180-
return nil
180+
return ans
181181
}
182-
var ans [][]int
183182
var q = []*TreeNode{root}
184183
for len(q) > 0 {
185184
var t []int
186-
n := len(q)
187-
for i := 0; i < n; i++ {
185+
for n := len(q); n > 0; n-- {
188186
node := q[0]
189187
q = q[1:]
190188
t = append(t, node.Val)
@@ -217,14 +215,14 @@ func levelOrder(root *TreeNode) [][]int {
217215
* @return {number[][]}
218216
*/
219217
var levelOrder = function (root) {
218+
let ans = [];
220219
if (!root) {
221-
return [];
220+
return ans;
222221
}
223-
let ans = [];
224222
let q = [root];
225223
while (q.length) {
226224
let t = [];
227-
for (let i = 0, n = q.length; i < n; ++i) {
225+
for (let n = q.length; n; --n) {
228226
const node = q.shift();
229227
t.push(node.val);
230228
if (node.left) {

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

+15-15
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838

3939
## Solutions
4040

41+
BFS.
42+
4143
<!-- tabs:start -->
4244

4345
### **Python3**
@@ -56,9 +58,8 @@ class Solution:
5658
ans = []
5759
q = deque([root])
5860
while q:
59-
n = len(q)
6061
t = []
61-
for _ in range(n):
62+
for _ in range(len(q)):
6263
node = q.popleft()
6364
t.append(node.val)
6465
if node.left:
@@ -89,16 +90,16 @@ class Solution:
8990
*/
9091
class Solution {
9192
public List<List<Integer>> levelOrder(TreeNode root) {
93+
List<List<Integer>> ans = new ArrayList<>();
9294
if (root == null) {
93-
return Collections.emptyList();
95+
return ans;
9496
}
9597
Deque<TreeNode> q = new ArrayDeque<>();
9698
q.offer(root);
97-
List<List<Integer>> ans = new ArrayList<>();
9899
while (!q.isEmpty()) {
99100
List<Integer> t = new ArrayList<>();
100-
for (int i = 0, n = q.size(); i < n; ++i) {
101-
TreeNode node = q.pollFirst();
101+
for (int n = q.size(); n > 0; --n) {
102+
TreeNode node = q.poll();
102103
t.add(node.val);
103104
if (node.left != null) {
104105
q.offer(node.left);
@@ -131,13 +132,13 @@ class Solution {
131132
class Solution {
132133
public:
133134
vector<vector<int>> levelOrder(TreeNode* root) {
134-
if (!root) return {};
135135
vector<vector<int>> ans;
136+
if (!root) return ans;
136137
queue<TreeNode*> q{{root}};
137138
while (!q.empty())
138139
{
139140
vector<int> t;
140-
for (int i = 0, n = q.size(); i < n; ++i)
141+
for (int n = q.size(); n; --n)
141142
{
142143
auto node = q.front();
143144
q.pop();
@@ -164,15 +165,14 @@ public:
164165
* }
165166
*/
166167
func levelOrder(root *TreeNode) [][]int {
168+
var ans [][]int
167169
if root == nil {
168-
return nil
170+
return ans
169171
}
170-
var ans [][]int
171172
var q = []*TreeNode{root}
172173
for len(q) > 0 {
173174
var t []int
174-
n := len(q)
175-
for i := 0; i < n; i++ {
175+
for n := len(q); n > 0; n-- {
176176
node := q[0]
177177
q = q[1:]
178178
t = append(t, node.Val)
@@ -205,14 +205,14 @@ func levelOrder(root *TreeNode) [][]int {
205205
* @return {number[][]}
206206
*/
207207
var levelOrder = function (root) {
208+
let ans = [];
208209
if (!root) {
209-
return [];
210+
return ans;
210211
}
211-
let ans = [];
212212
let q = [root];
213213
while (q.length) {
214214
let t = [];
215-
for (let i = 0, n = q.length; i < n; ++i) {
215+
for (let n = q.length; n; --n) {
216216
const node = q.shift();
217217
t.push(node.val);
218218
if (node.left) {

solution/0100-0199/0102.Binary Tree Level Order Traversal/Solution.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
class Solution {
1313
public:
1414
vector<vector<int>> levelOrder(TreeNode* root) {
15-
if (!root) return {};
1615
vector<vector<int>> ans;
16+
if (!root) return ans;
1717
queue<TreeNode*> q{{root}};
1818
while (!q.empty())
1919
{
2020
vector<int> t;
21-
for (int i = 0, n = q.size(); i < n; ++i)
21+
for (int n = q.size(); n; --n)
2222
{
2323
auto node = q.front();
2424
q.pop();

solution/0100-0199/0102.Binary Tree Level Order Traversal/Solution.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@
77
* }
88
*/
99
func levelOrder(root *TreeNode) [][]int {
10+
var ans [][]int
1011
if root == nil {
11-
return nil
12+
return ans
1213
}
13-
var ans [][]int
1414
var q = []*TreeNode{root}
1515
for len(q) > 0 {
1616
var t []int
17-
n := len(q)
18-
for i := 0; i < n; i++ {
17+
for n := len(q); n > 0; n-- {
1918
node := q[0]
2019
q = q[1:]
2120
t = append(t, node.Val)

solution/0100-0199/0102.Binary Tree Level Order Traversal/Solution.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515
*/
1616
class Solution {
1717
public List<List<Integer>> levelOrder(TreeNode root) {
18+
List<List<Integer>> ans = new ArrayList<>();
1819
if (root == null) {
19-
return Collections.emptyList();
20+
return ans;
2021
}
2122
Deque<TreeNode> q = new ArrayDeque<>();
2223
q.offer(root);
23-
List<List<Integer>> ans = new ArrayList<>();
2424
while (!q.isEmpty()) {
2525
List<Integer> t = new ArrayList<>();
26-
for (int i = 0, n = q.size(); i < n; ++i) {
27-
TreeNode node = q.pollFirst();
26+
for (int n = q.size(); n > 0; --n) {
27+
TreeNode node = q.poll();
2828
t.add(node.val);
2929
if (node.left != null) {
3030
q.offer(node.left);

solution/0100-0199/0102.Binary Tree Level Order Traversal/Solution.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111
* @return {number[][]}
1212
*/
1313
var levelOrder = function (root) {
14+
let ans = [];
1415
if (!root) {
15-
return [];
16+
return ans;
1617
}
17-
let ans = [];
1818
let q = [root];
1919
while (q.length) {
2020
let t = [];
21-
for (let i = 0, n = q.length; i < n; ++i) {
21+
for (let n = q.length; n; --n) {
2222
const node = q.shift();
2323
t.push(node.val);
2424
if (node.left) {

solution/0100-0199/0102.Binary Tree Level Order Traversal/Solution.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ def levelOrder(self, root: TreeNode) -> List[List[int]]:
1111
ans = []
1212
q = deque([root])
1313
while q:
14-
n = len(q)
1514
t = []
16-
for _ in range(n):
15+
for _ in range(len(q)):
1716
node = q.popleft()
1817
t.append(node.val)
1918
if node.left:

0 commit comments

Comments
 (0)