如何用Python实现二叉树层序遍历,借助队列辅助完成BFS广度优先搜索?
- 内容介绍
- 文章标签
- 相关推荐
本文共计869个文字,预计阅读时间需要4分钟。
层次遍历本质是+BFS,必须保证先进先出,在Python中是+list.pop(0)+,这是O(n)操作,节点越多就越明显。实际项目中见过10+级别的节点时,响应慢3+倍以上。
实操建议:
立即学习“Python免费学习笔记(深入)”;
- 固定用
from collections import deque,初始化写成queue = deque([root]) - 每次取队首用
queue.popleft()(O(1)),不是queue.pop(0) - 添加子节点统一用
queue.append(),左右顺序别颠倒(左先右后才符合常规层序)
空节点不入队,但得判断 node 是否为 None
常见错误是把 None 也塞进队列,导致后续 node.left 报 AttributeError: 'NoneType' object has no attribute 'left'。
本文共计869个文字,预计阅读时间需要4分钟。
层次遍历本质是+BFS,必须保证先进先出,在Python中是+list.pop(0)+,这是O(n)操作,节点越多就越明显。实际项目中见过10+级别的节点时,响应慢3+倍以上。
实操建议:
立即学习“Python免费学习笔记(深入)”;
- 固定用
from collections import deque,初始化写成queue = deque([root]) - 每次取队首用
queue.popleft()(O(1)),不是queue.pop(0) - 添加子节点统一用
queue.append(),左右顺序别颠倒(左先右后才符合常规层序)
空节点不入队,但得判断 node 是否为 None
常见错误是把 None 也塞进队列,导致后续 node.left 报 AttributeError: 'NoneType' object has no attribute 'left'。

