队列模拟递归遍历目录(广度遍历)

import os
import collections
def getALLDir(path):
    queue = collections.deque()#空的
    queue.append(path)#进队

    while len(queue) != 0:
        dirPath = queue.popleft()#数据出队
        filesList = os.listdir(dirPath)#找出所有文件

        for fileName in filesList:#处理文件
            fileAbsPath = os.path.join(dirPath,fileName)#合成文件绝对路径
            if os.path.isdir(fileAbsPath):#判断文件类型
                print("目录:" + fileName)
                queue.append(fileAbsPath)#若文件为目录 则进队 进行!=0的判断 即继续遍历
            else:
                print("普通文件:" + fileName)
getALLDir(r"C:\Users\23678\Desktop\超星智慧树网课助手浏览器版V1.1.0")

思路简图

画的有点丑,不要嫌弃 (~ ̄▽ ̄)~

原文地址:https://www.cnblogs.com/FSHOU/p/12331774.html

时间: 2024-10-06 14:48:40

队列模拟递归遍历目录(广度遍历)的相关文章

python中用队列模拟递归(广度遍历)

用队列模拟递归(广度遍历)import osimport collections def getAllDirQU(path): queue=collections.deque() #进队 queue.append(path) while len(queue)!=0: #出队数据 dirPath=queue.popleft() #找出dirPath所有的文件 filesList=os.listdir(dirPath) for fileName in filesList: #绝对路径 fileAbs

深度遍历与广度遍历

本盘文章是参考其他人的博客写的,只为自己记忆,参考者勿喷. 深度遍历:非递归,使用List保存已经访问过的节点 广度遍历:递归方式,List保存已经访问过的节点,使用Queue队列 具体图如下所示: package com.cust.grape; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Que

Java 实现深度遍历和广度遍历数及其应用

一.深度遍历和广度遍历原理及实现 1.深度优先 英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.对于上面的例子来说深度优先遍历的结果就是:A,B,D,E,I,C,F,G,H.(假设先走子节点的的左侧). 深度优先遍历各个节点,需要使用到堆(Stack)这种数据结构.stack的特点是是先进后出.整个遍历过程如下: 首先将A节点压入堆中,stack(A); 将A节点弹出,同时将A的子节点C,B压入堆中,此

图的深度遍历和广度遍历

概述 图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次.图的遍历操作和树的遍历操作功能相似.图的遍历是图的一种基本操作,图的其它算法如求解图的连通性问题,拓扑排序,求关键路径等都是建立在遍历算法的基础之上. 由于图结构本身的复杂性,所以图的遍历操作也较复杂,主要表现在以下四个方面:① 在图结构中,没有一个“自然”的首结点,图中任意一个顶点都可作为第一个被访问的结点.② 在非连通图中,从一个顶点出发,只能够访问它所在的连通分量上的所有顶点,因此,还需考虑如何选取下一个出发点以

二叉树的前中后序遍历迭代&广度遍历

递归很是简单 但也应该掌握其迭代方式的遍历方法 这三种的迭代遍历方法需要通过栈来存储节点 尤其是后序遍历还需要 记录当前节点的右子树是否已被遍历 决定是否遍历当前节点 而其广度遍历 只需要一个队列来顺序记录遍历节点 即可轻松解决问题  主要思想在程序代码中来做说明 前序遍历:遍历结果返回一个vector容器中 std::vector<int> BinaryTree::pre_order_iter(Binary_node *root){    std::vector<int> res

数据结构-深度遍历和广度遍历(转)

本文转自http://blog.csdn.net/wingofeagle/article/details/13020373 深度遍历: 从图中某个顶点v出发,访问此顶点,然后从v的未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径相通的顶点都被访问到. 其更适合:目标比较明确,以找到目标为主要目的的情况. 广度遍历: 类似于树中的层序遍历,首先遍历完和某一顶点v相连的所有顶点,然后再遍历和这些顶点相连的顶点,以此类推. 其更适合于:不断扩大遍历范围时找到相对最优解的情况. 具体代码如下:

第五章 图的遍历(深度遍历,广度遍历,城市地图,最少转机)

深度和广度优先搜索: 单词分解:首先是搜索 深度和广度:是针对图的遍历而言的 图:由顶点和边组成 图的遍历:把图中每一个顶点都访问一次 一: 输入: 5 5(顶点数,边数) 1 2 1 3 1 5 2 4 3 5 输出: 1 2 4 3 5 (按时间戳输出)深度遍历 1 2 3 5 4 (按时间戳输出)广度遍历 1 #include <stdio.h> 2 int map[10][10], book[10], n, m,sum; 3 void dfs(int cur) 4 { 5 int i;

python 队列模拟递归遍历目录(广度遍历)

import osimport collections def getAllDirQU(path): queue = collections.deque() #进队 queue.append(path) while len(queue) != 0: #出队数据 dirPath = queue.popleft() #找出所有的文件 filesList = os.listdir(dirPath) for fileName in filesList: #绝对路径 fileAbsPath = os.pa

二叉树深度遍历和广度遍历

https://blog.csdn.net/weixin_39912556/article/details/82852749 package Method; import java.util.ArrayDeque; import java.util.Deque; import java.util.Queue; import java.util.Stack; /** * Created by joyce on 2019/9/11. */ public class TreeMain { privat