Skip to content

Commit 4969426

Browse files
committed
feat: add solutions to lc problem: No.0429. N-ary Tree Level Order Traversal
1 parent 965202d commit 4969426

File tree

3 files changed

+180
-3
lines changed

3 files changed

+180
-3
lines changed

solution/0400-0499/0429.N-ary Tree Level Order Traversal/README.md

+91-1
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,112 @@
4444

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

47+
“BFS 层次遍历实现”。
48+
4749
<!-- tabs:start -->
4850

4951
### **Python3**
5052

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

5355
```python
54-
56+
"""
57+
# Definition for a Node.
58+
class Node:
59+
def __init__(self, val=None, children=None):
60+
self.val = val
61+
self.children = children
62+
"""
63+
64+
class Solution:
65+
def levelOrder(self, root: 'Node') -> List[List[int]]:
66+
if root is None:
67+
return []
68+
q = collections.deque([root])
69+
res = []
70+
while q:
71+
n = len(q)
72+
t = []
73+
for _ in range(n):
74+
node = q.popleft()
75+
t.append(node.val)
76+
if node.children:
77+
q.extend(node.children)
78+
res.append(t)
79+
return res
5580
```
5681

5782
### **Java**
5883

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

6186
```java
87+
/*
88+
// Definition for a Node.
89+
class Node {
90+
public int val;
91+
public List<Node> children;
92+
93+
public Node() {}
94+
95+
public Node(int _val) {
96+
val = _val;
97+
}
98+
99+
public Node(int _val, List<Node> _children) {
100+
val = _val;
101+
children = _children;
102+
}
103+
};
104+
*/
105+
106+
class Solution {
107+
public List<List<Integer>> levelOrder(Node root) {
108+
if (root == null) {
109+
return Collections.emptyList();
110+
}
111+
Deque<Node> q = new ArrayDeque<>();
112+
List<List<Integer>> res = new ArrayList<>();
113+
q.offer(root);
114+
while (!q.isEmpty()) {
115+
List<Integer> t = new ArrayList<>();
116+
for (int i = 0, n = q.size(); i < n; ++i) {
117+
Node node = q.poll();
118+
t.add(node.val);
119+
if (node.children != null) {
120+
q.addAll(node.children);
121+
}
122+
}
123+
res.add(t);
124+
}
125+
return res;
126+
}
127+
}
128+
```
62129

130+
也可以使用 DFS:
131+
132+
```java
133+
class Solution {
134+
public List<List<Integer>> levelOrder(Node root) {
135+
List<List<Integer>> res = new ArrayList<>();
136+
dfs(root, 0, res);
137+
return res;
138+
}
139+
140+
private void dfs(Node root, int level, List<List<Integer>> res) {
141+
if (root == null) {
142+
return;
143+
}
144+
if (res.size() <= level) {
145+
res.add(new ArrayList<>());
146+
}
147+
res.get(level++).add(root.val);
148+
for (Node child : root.children) {
149+
dfs(child, level, res);
150+
}
151+
}
152+
}
63153
```
64154

65155
### **...**

solution/0400-0499/0429.N-ary Tree Level Order Traversal/README_EN.md

+65-2
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,76 @@
4646
### **Python3**
4747

4848
```python
49-
49+
"""
50+
# Definition for a Node.
51+
class Node:
52+
def __init__(self, val=None, children=None):
53+
self.val = val
54+
self.children = children
55+
"""
56+
57+
class Solution:
58+
def levelOrder(self, root: 'Node') -> List[List[int]]:
59+
if root is None:
60+
return []
61+
q = collections.deque([root])
62+
res = []
63+
while q:
64+
n = len(q)
65+
t = []
66+
for _ in range(n):
67+
node = q.popleft()
68+
t.append(node.val)
69+
if node.children:
70+
q.extend(node.children)
71+
res.append(t)
72+
return res
5073
```
5174

5275
### **Java**
5376

5477
```java
55-
78+
/*
79+
// Definition for a Node.
80+
class Node {
81+
public int val;
82+
public List<Node> children;
83+
84+
public Node() {}
85+
86+
public Node(int _val) {
87+
val = _val;
88+
}
89+
90+
public Node(int _val, List<Node> _children) {
91+
val = _val;
92+
children = _children;
93+
}
94+
};
95+
*/
96+
97+
class Solution {
98+
public List<List<Integer>> levelOrder(Node root) {
99+
if (root == null) {
100+
return Collections.emptyList();
101+
}
102+
Deque<Node> q = new ArrayDeque<>();
103+
List<List<Integer>> res = new ArrayList<>();
104+
q.offer(root);
105+
while (!q.isEmpty()) {
106+
List<Integer> t = new ArrayList<>();
107+
for (int i = 0, n = q.size(); i < n; ++i) {
108+
Node node = q.poll();
109+
t.add(node.val);
110+
if (node.children != null) {
111+
q.addAll(node.children);
112+
}
113+
}
114+
res.add(t);
115+
}
116+
return res;
117+
}
118+
}
56119
```
57120

58121
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""
2+
# Definition for a Node.
3+
class Node:
4+
def __init__(self, val=None, children=None):
5+
self.val = val
6+
self.children = children
7+
"""
8+
9+
class Solution:
10+
def levelOrder(self, root: 'Node') -> List[List[int]]:
11+
if root is None:
12+
return []
13+
q = collections.deque([root])
14+
res = []
15+
while q:
16+
n = len(q)
17+
t = []
18+
for _ in range(n):
19+
node = q.popleft()
20+
t.append(node.val)
21+
if node.children:
22+
q.extend(node.children)
23+
res.append(t)
24+
return res

0 commit comments

Comments
 (0)