Насчет использования лишней памяти. Это относится к каталогам? Т.е. Нужно завести внешнюю переменную, в которой хранить каталог, который обходится в данный момент? И менять его при завершении обхода этого каталога или при входе в новый?