У меня алгоритм такой: Сначала ищу только файлы в первой директории, затем как файлы закончились, я повторно вызываю функцию поиска и ищу в этой же директории папки, если есть, то перехожу в неё, смотрю, есть ли там файлы, если нет, то ищу папки, если есть, перехожу, если нету, то возвращаюсь в предыдущую директорию и начинаю поиск папок