美文网首页
用栈模拟递归遍历目录(深度遍历)

用栈模拟递归遍历目录(深度遍历)

作者: TonyCarson | 来源:发表于2019-01-10 19:28 被阅读0次

    什么是栈?

    栈是一种“先进后出”的一种数据结构,有压栈出栈两种操作方式。如下图?:

    栈的压栈和出栈

    什么是深度遍历呢?

     假设初始状态是图中所有顶点未曾被访问,则深度优先搜索可从图中某个顶点发v 出发,访问此顶点,然后依次从v 的未被访问的邻接点出发深度优先遍历图,直至图中所有和v 有路径相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。

    了解了上面的一些基本点就让我们来看来一些代码吧:

    import os

    def getAllDirDe(path):

    stack = []

    stack.append(path)

    # 处理栈,当栈为空的时候结束循环

        while len(stack) !=0:

    # 从栈里取数据

            dirPath = stack.pop()

    # 目录下所有文件

            filesList = os.listdir(dirPath)

    # 处理每一个文件,如果是普通文件则打印出来,如果是普通文件则将该目录的地址亚栈

            for fileNamein filesList:

    fileAbsPath = os.path.join(dirPath,fileName)

    if os.path.isdir(fileAbsPath):

    # 是目录就压栈

                    stack.append(fileAbsPath)

    print("目录:"+ fileName)

    else:

    # 打印普通文件

                    print("普通:" + fileName)

    getAllDirDe(r"E:\python\PycharmProjects\python基础学习\day05")

    执行结果如下:

    dfs

    相关文章

      网友评论

          本文标题:用栈模拟递归遍历目录(深度遍历)

          本文链接:https://www.haomeiwen.com/subject/vpqzrqtx.html