Skip to content

Commit f5a5cd8

Browse files
committed
优化 0102.二叉树的层序遍历.md Python3解法
任何在 list 头部进行的操作都会损失一定性能 在 Python 中应该使用 collections.deque 作为队列的数据类型 在该数据类型左右两端追加和弹出元素的时间复杂度都接近O(1)
1 parent 186d4e4 commit f5a5cd8

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

problems/0102.二叉树的层序遍历.md

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,26 +87,31 @@ public:
8787
8888
python代码:
8989
90-
```python
90+
```python3
9191
class Solution:
92+
"""二叉树层序遍历迭代解法"""
93+
9294
def levelOrder(self, root: TreeNode) -> List[List[int]]:
95+
results = []
9396
if not root:
94-
return []
95-
96-
queue = [root]
97-
out_list = []
98-
99-
while queue:
100-
length = len(queue)
101-
in_list = []
102-
for _ in range(length):
103-
curnode = queue.pop(0) # (默认移除列表最后一个元素)这里需要移除队列最头上的那个
104-
in_list.append(curnode.val)
105-
if curnode.left: queue.append(curnode.left)
106-
if curnode.right: queue.append(curnode.right)
107-
out_list.append(in_list)
97+
return results
98+
99+
from collections import deque
100+
que = deque([root])
101+
102+
while que:
103+
size = len(que)
104+
result = []
105+
for _ in range(size):
106+
cur = que.popleft()
107+
result.append(cur.val)
108+
if cur.left:
109+
que.append(cur.left)
110+
if cur.right:
111+
que.append(cur.right)
112+
results.append(result)
108113
109-
return out_list
114+
return results
110115
```
111116

112117
java:

0 commit comments

Comments
 (0)