一尘不染

具有大量文件的目录结构的树遍历算法

algorithm

递归遍历目录结构时,如果文件多于目录,最有效的算法是什么?我注意到,当使用深度优先遍历时,在给定目录中有很多文件时,似乎要花费更长的时间。在这种情况下,广度优先遍历是否更有效?目前,我无法介绍这两种算法,因此非常欢迎您提供见解。

编辑:为响应alphazero的评论,我在Linux机器上使用PHP。


阅读 328

收藏
2020-07-28

共1个答案

一尘不染

广度优先会更好。当您输入根文件夹时,将创建您需要处理的项目列表。这些项目中有些是文件,有些是目录。

如果您使用广度优先,则在继续处理子目录之一之前,您将处理目录中的文件并忽略它们。

如果您使用深度优先,则需要继续增加文件列表,以备日后深入研究时使用。这样会占用更多内存来维护您要处理的文件列表,可能会导致更多页面错误等。

另外,无论如何,您都需要遍历新项目的列表,以找出哪些是可以钻取的目录。在处理文件时,您将需要再次浏览同一列表(减去目录)。

2020-07-28