use*_*540 5 language-agnostic algorithm data-structures
我最近接受了一家有信誉的公司的采访,担任软件开发人员的职位,这是其中一个问题:
"考虑到以下方法:
List subDirectories(String directoryName){ ... };
List filesInDirectory(String directoryName) { ... };
Run Code Online (Sandbox Code Playgroud)
顾名思义,第一种方法返回输入目录('directoryName')中直接子目录的名称列表,第二种方法返回该文件夹中所有文件的名称列表.
打印文件系统中的所有文件."
我考虑过这个问题并给了采访一个非常明显的递归解决方案.然后她告诉我没有递归就这样做.由于递归使用了调用堆栈,我告诉她我将使用辅助堆栈,在这一点上她告诉我不要使用堆栈.不幸的是,我无法提出解决方案.我确实问过没有递归/堆栈怎么做,但她不会说.
如何才能做到这一点?
您想要使用队列和 BFS 算法。
我想一些伪代码会很好:
files = filesInDirectory("/")
foreach (file in files) {
fileQ.append(file)
}
dirQ = subDirectories("/")
while (dirQ != empty) {
dir = dirQ.pop
files = filesInDirectory(dir)
foreach (file in files) {
fileQ.append(file)
}
dirQ.append(subDirectories(dir))
}
while (fileQ != empty) {
print fileQ.pop
}
Run Code Online (Sandbox Code Playgroud)