Skip to content

Commit ff781aa

Browse files
committed
feat: add solutions to lc problem: No.0637. Average of Levels in Binary Tree
1 parent d088cba commit ff781aa

File tree

4 files changed

+157
-19
lines changed

4 files changed

+157
-19
lines changed

solution/0600-0699/0637.Average of Levels in Binary Tree/README.md

+59-2
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,72 @@
4343
<!-- 这里可写当前语言的特殊实现逻辑 -->
4444

4545
```python
46-
46+
# Definition for a binary tree node.
47+
# class TreeNode:
48+
# def __init__(self, val=0, left=None, right=None):
49+
# self.val = val
50+
# self.left = left
51+
# self.right = right
52+
class Solution:
53+
def averageOfLevels(self, root: TreeNode) -> List[float]:
54+
res = []
55+
q = collections.deque([root])
56+
while q:
57+
n = len(q)
58+
s = 0
59+
for _ in range(n):
60+
node = q.popleft()
61+
s += node.val
62+
if node.left:
63+
q.append(node.left)
64+
if node.right:
65+
q.append(node.right)
66+
res.append(s / n)
67+
return res
4768
```
4869

4970
### **Java**
5071

5172
<!-- 这里可写当前语言的特殊实现逻辑 -->
5273

5374
```java
54-
75+
/**
76+
* Definition for a binary tree node.
77+
* public class TreeNode {
78+
* int val;
79+
* TreeNode left;
80+
* TreeNode right;
81+
* TreeNode() {}
82+
* TreeNode(int val) { this.val = val; }
83+
* TreeNode(int val, TreeNode left, TreeNode right) {
84+
* this.val = val;
85+
* this.left = left;
86+
* this.right = right;
87+
* }
88+
* }
89+
*/
90+
class Solution {
91+
public List<Double> averageOfLevels(TreeNode root) {
92+
List<Double> res = new ArrayList<>();
93+
Queue<TreeNode> q = new LinkedList<>();
94+
q.offer(root);
95+
while (!q.isEmpty()) {
96+
double s = 0, n = q.size();
97+
for (int i = 0; i < n; ++i) {
98+
TreeNode node = q.poll();
99+
s += node.val;
100+
if (node.left != null) {
101+
q.offer(node.left);
102+
}
103+
if (node.right != null) {
104+
q.offer(node.right);
105+
}
106+
}
107+
res.add(s / n);
108+
}
109+
return res;
110+
}
111+
}
55112
```
56113

57114
### **...**

solution/0600-0699/0637.Average of Levels in Binary Tree/README_EN.md

+59-2
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,70 @@ Hence return [3, 14.5, 11].
3838
### **Python3**
3939

4040
```python
41-
41+
# Definition for a binary tree node.
42+
# class TreeNode:
43+
# def __init__(self, val=0, left=None, right=None):
44+
# self.val = val
45+
# self.left = left
46+
# self.right = right
47+
class Solution:
48+
def averageOfLevels(self, root: TreeNode) -> List[float]:
49+
res = []
50+
q = collections.deque([root])
51+
while q:
52+
n = len(q)
53+
s = 0
54+
for _ in range(n):
55+
node = q.popleft()
56+
s += node.val
57+
if node.left:
58+
q.append(node.left)
59+
if node.right:
60+
q.append(node.right)
61+
res.append(s / n)
62+
return res
4263
```
4364

4465
### **Java**
4566

4667
```java
47-
68+
/**
69+
* Definition for a binary tree node.
70+
* public class TreeNode {
71+
* int val;
72+
* TreeNode left;
73+
* TreeNode right;
74+
* TreeNode() {}
75+
* TreeNode(int val) { this.val = val; }
76+
* TreeNode(int val, TreeNode left, TreeNode right) {
77+
* this.val = val;
78+
* this.left = left;
79+
* this.right = right;
80+
* }
81+
* }
82+
*/
83+
class Solution {
84+
public List<Double> averageOfLevels(TreeNode root) {
85+
List<Double> res = new ArrayList<>();
86+
Queue<TreeNode> q = new LinkedList<>();
87+
q.offer(root);
88+
while (!q.isEmpty()) {
89+
double s = 0, n = q.size();
90+
for (int i = 0; i < n; ++i) {
91+
TreeNode node = q.poll();
92+
s += node.val;
93+
if (node.left != null) {
94+
q.offer(node.left);
95+
}
96+
if (node.right != null) {
97+
q.offer(node.right);
98+
}
99+
}
100+
res.add(s / n);
101+
}
102+
return res;
103+
}
104+
}
48105
```
49106

50107
### **...**

solution/0600-0699/0637.Average of Levels in Binary Tree/Solution.java

+17-15
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,33 @@
44
* int val;
55
* TreeNode left;
66
* TreeNode right;
7-
* TreeNode(int x) { val = x; }
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
814
* }
915
*/
1016
class Solution {
11-
1217
public List<Double> averageOfLevels(TreeNode root) {
13-
if (root == null) return null;
14-
1518
List<Double> res = new ArrayList<>();
16-
LinkedList<TreeNode> queue = new LinkedList<>();
17-
queue.offer(root);
18-
19-
while (!queue.isEmpty()) {
20-
double sum = 0, size = queue.size();
21-
for (int i = 0; i < size; i ++) {
22-
TreeNode node = queue.poll();
23-
sum += node.val;
19+
Queue<TreeNode> q = new LinkedList<>();
20+
q.offer(root);
21+
while (!q.isEmpty()) {
22+
double s = 0, n = q.size();
23+
for (int i = 0; i < n; ++i) {
24+
TreeNode node = q.poll();
25+
s += node.val;
2426
if (node.left != null) {
25-
queue.offer(node.left);
27+
q.offer(node.left);
2628
}
2729
if (node.right != null) {
28-
queue.offer(node.right);
30+
q.offer(node.right);
2931
}
3032
}
31-
res.add(sum / size);
33+
res.add(s / n);
3234
}
3335
return res;
3436
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
def averageOfLevels(self, root: TreeNode) -> List[float]:
9+
res = []
10+
q = collections.deque([root])
11+
while q:
12+
n = len(q)
13+
s = 0
14+
for _ in range(n):
15+
node = q.popleft()
16+
s += node.val
17+
if node.left:
18+
q.append(node.left)
19+
if node.right:
20+
q.append(node.right)
21+
res.append(s / n)
22+
return res

0 commit comments

Comments
 (0)