不使用堆栈/队列的非递归方式列出目录和子目录中的文件

Ars*_*nko 5 algorithm queue recursion stack

在一次面试中,我被要求列出目录及其子目录\xc2\xb9中的文件名,而不使用递归,也不使用堆栈或队列。

\n\n

由于我知道的唯一非递归方式使用堆栈,因此我无法回答这个问题。

\n\n

面试官解释了解决方案,但我无法理解。我唯一记得的是它涉及两种方法而不是一种。

\n\n

这种允许在没有递归、没有堆栈或队列的情况下列出目录及其子目录中的文件的方法是什么?

\n\n
\n\n

\xc2\xb9 解决方案与语言无关。子目录列表由ListDirectories(string directoryPath)方法提供,文件由ListFiles(string directoryPath). 我们事先不知道子目录的深度。

\n

Kag*_*nar 4

在深度优先搜索中,请注意当前路径本质上充当堆栈。以深度优先的方式列出名称,按照您期望的方式进行,但不必费心记录堆栈...当您完成列出目录中的文件时,您可以通过注意最后一个目录是什么来“弹出”堆栈然后从父目录中的该点继续。