@概述
- 广度优先遍历:层级上由浅入深对路径进行遍历;
- 深度优先遍历:从最外层开始,依次对每个文件夹进行纵深遍历直到不再有子文件夹(完成第一个的纵深遍历,再来第二个);
- 广度遍历可以使用队列实现;
- 深度遍历可以使用栈实现,也可以使用递归实现;
- collections.deque是一个可以从头部和尾部两个方向进行弹出的容器,我们使用它来模拟队列和栈;(列表也是可以的)
@广度遍历-队列实现
# 广度优先遍历
# dirPath 要遍历的文件夹
def traverseVast(dirPath):
# 创建一个队列容器
dirs = collections.deque()
# 将根路径丢入队列
dirs.append(dirPath)
# 从队列头部依次取出路径,直到取尽
while len(dirs) > 0:
# 弹出队列头部的目录
path = dirs.popleft()
# 罗列所有子路径
sPaths = [path + p for p in os.listdir(path)]
# 遍历子路径,如果是文件夹就继续追加到队列的尾部
for p in sPaths: