mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-12 21:50:49 +08:00
优化 0102.二叉树的层序遍历.md 中的 429.N叉树的层序遍历 Python3解法
This commit is contained in:
@ -825,52 +825,28 @@ public:
|
|||||||
python代码:
|
python代码:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
|
||||||
class Solution:
|
class Solution:
|
||||||
|
"""N叉树的层序遍历迭代法"""
|
||||||
|
|
||||||
def levelOrder(self, root: 'Node') -> List[List[int]]:
|
def levelOrder(self, root: 'Node') -> List[List[int]]:
|
||||||
|
results = []
|
||||||
if not root:
|
if not root:
|
||||||
return []
|
return results
|
||||||
|
|
||||||
quene = deque([root])
|
from collections import deque
|
||||||
out_list = []
|
que = deque([root])
|
||||||
|
|
||||||
while quene:
|
while que:
|
||||||
in_list = []
|
result = []
|
||||||
|
for _ in range(len(que)):
|
||||||
|
cur = que.popleft()
|
||||||
|
result.append(cur.val)
|
||||||
|
# cur.children 是 Node 对象组成的列表,也可能为 None
|
||||||
|
if cur.children:
|
||||||
|
que.extend(cur.children)
|
||||||
|
results.append(result)
|
||||||
|
|
||||||
for _ in range(len(quene)):
|
return results
|
||||||
node = quene.popleft()
|
|
||||||
in_list.append(node.val)
|
|
||||||
if node.children:
|
|
||||||
# 这个地方要用extend而不是append,我们看下面的例子:
|
|
||||||
# In [18]: alist=[]
|
|
||||||
# In [19]: alist.append([1,2,3])
|
|
||||||
# In [20]: alist
|
|
||||||
# Out[20]: [[1, 2, 3]]
|
|
||||||
# In [21]: alist.extend([4,5,6])
|
|
||||||
# In [22]: alist
|
|
||||||
# Out[22]: [[1, 2, 3], 4, 5, 6]
|
|
||||||
# 可以看到extend对要添加的list进行了一个解包操作
|
|
||||||
# print(root.children),可以得到children是一个包含
|
|
||||||
# 孩子节点地址的list,我们使用for遍历quene的时候,
|
|
||||||
# 希望quene是一个单层list,所以要用extend
|
|
||||||
# 使用extend的情况,如果print(quene),结果是
|
|
||||||
# deque([<__main__.Node object at 0x7f60763ae0a0>])
|
|
||||||
# deque([<__main__.Node object at 0x7f607636e6d0>, <__main__.Node object at 0x7f607636e130>, <__main__.Node object at 0x7f607636e310>])
|
|
||||||
# deque([<__main__.Node object at 0x7f607636e880>, <__main__.Node object at 0x7f607636ef10>])
|
|
||||||
# 可以看到是单层list
|
|
||||||
# 如果使用append,print(quene)的结果是
|
|
||||||
# deque([<__main__.Node object at 0x7f18907530a0>])
|
|
||||||
# deque([[<__main__.Node object at 0x7f18907136d0>, <__main__.Node object at 0x7f1890713130>, <__main__.Node object at 0x7f1890713310>]])
|
|
||||||
# 可以看到是两层list,这样for的遍历就会报错
|
|
||||||
|
|
||||||
quene.extend(node.children)
|
|
||||||
|
|
||||||
out_list.append(in_list)
|
|
||||||
|
|
||||||
return out_list
|
|
||||||
|
|
||||||
# 执行用时:60 ms, 在所有 Python3 提交中击败了76.99%的用户
|
|
||||||
# 内存消耗:16.5 MB, 在所有 Python3 提交中击败了89.19%的用户
|
|
||||||
```
|
```
|
||||||
|
|
||||||
java:
|
java:
|
||||||
|
Reference in New Issue
Block a user