Skip to content

Commit e4ff1e4

Browse files
committed
feat: add python and java solutions to lcof problem
添加《剑指 Offer》题解:面试题32 - I. 从上到下打印二叉树
1 parent 7853d4c commit e4ff1e4

File tree

3 files changed

+162
-0
lines changed

3 files changed

+162
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# [面试题32 - I. 从上到下打印二叉树](https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/)
2+
3+
## 题目描述
4+
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
5+
6+
**例如:**
7+
8+
给定二叉树: `[3,9,20,null,null,15,7]`,
9+
10+
```
11+
3
12+
/ \
13+
9 20
14+
/ \
15+
15 7
16+
```
17+
18+
**返回:**
19+
20+
```
21+
[3,9,20,15,7]
22+
```
23+
24+
**提示:**
25+
26+
- `节点总数 <= 1000`
27+
28+
## 解法
29+
### Python3
30+
```python
31+
# Definition for a binary tree node.
32+
# class TreeNode:
33+
# def __init__(self, x):
34+
# self.val = x
35+
# self.left = None
36+
# self.right = None
37+
38+
from queue import Queue
39+
40+
class Solution:
41+
def levelOrder(self, root: TreeNode) -> List[int]:
42+
if root is None:
43+
return []
44+
s = Queue()
45+
res = []
46+
s.put(root)
47+
while not s.empty():
48+
node = s.get()
49+
res.append(node.val)
50+
if node.left:
51+
s.put(node.left)
52+
if node.right:
53+
s.put(node.right)
54+
return res
55+
```
56+
57+
### Java
58+
```java
59+
/**
60+
* Definition for a binary tree node.
61+
* public class TreeNode {
62+
* int val;
63+
* TreeNode left;
64+
* TreeNode right;
65+
* TreeNode(int x) { val = x; }
66+
* }
67+
*/
68+
class Solution {
69+
public int[] levelOrder(TreeNode root) {
70+
if (root == null) {
71+
return new int[0];
72+
}
73+
Queue<TreeNode> q = new LinkedList<>();
74+
Queue<Integer> s = new LinkedList<>();
75+
q.offer(root);
76+
77+
while (!q.isEmpty()) {
78+
TreeNode node = q.poll();
79+
s.offer(node.val);
80+
if (node.left != null) {
81+
q.offer(node.left);
82+
}
83+
if (node.right != null) {
84+
q.offer(node.right);
85+
}
86+
}
87+
int[] res = new int[s.size()];
88+
89+
for (int i = 0, len = s.size(); i < len; ++i) {
90+
res[i] = s.poll();
91+
}
92+
return res;
93+
94+
}
95+
}
96+
```
97+
98+
### ...
99+
```
100+
101+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode(int x) { val = x; }
8+
* }
9+
*/
10+
class Solution {
11+
public int[] levelOrder(TreeNode root) {
12+
if (root == null) {
13+
return new int[0];
14+
}
15+
Queue<TreeNode> q = new LinkedList<>();
16+
Queue<Integer> s = new LinkedList<>();
17+
q.offer(root);
18+
19+
while (!q.isEmpty()) {
20+
TreeNode node = q.poll();
21+
s.offer(node.val);
22+
if (node.left != null) {
23+
q.offer(node.left);
24+
}
25+
if (node.right != null) {
26+
q.offer(node.right);
27+
}
28+
}
29+
int[] res = new int[s.size()];
30+
31+
for (int i = 0, len = s.size(); i < len; ++i) {
32+
res[i] = s.poll();
33+
}
34+
return res;
35+
36+
}
37+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
from queue import Queue
9+
10+
class Solution:
11+
def levelOrder(self, root: TreeNode) -> List[int]:
12+
if root is None:
13+
return []
14+
s = Queue()
15+
res = []
16+
s.put(root)
17+
while not s.empty():
18+
node = s.get()
19+
res.append(node.val)
20+
if node.left:
21+
s.put(node.left)
22+
if node.right:
23+
s.put(node.right)
24+
return res

0 commit comments

Comments
 (0)