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

什么是栈?

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


栈的压栈和出栈

什么是深度遍历呢?

 假设初始状态是图中所有顶点未曾被访问,则深度优先搜索可从图中某个顶点发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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容