DFS - рекурсивный алгоритм.
Если вы пытаетесь избежать исчерпания пространства стека, вы можете использовать явный стек (преобразовать неявный стек вызовов в явный стек узлов).Но я не думаю, что вы можете избежать того факта, что это рекурсивный алгоритм.
Даже если вы используете явный стек, у вас все равно может быть недостаточно памяти.Это зависит от объема памяти в вашей системе и формы дерева.Но в большинстве случаев это, по крайней мере, позволит избежать неприятного сбоя (вы можете обнаружить, когда у вас заканчивается куча памяти).