Вы измените это, чтобы использовать стек следующим образом:
algorithm search(NODE):
createStack()
addNodeToStack(NODE)
while(stackHasElements)
NODE = popNodeFromStack()
doSomethingWith(NODE)
for each node CHILD connected to NODE:
addNodeToStack(CHILD)
Что касается вашего второго вопроса:
Во многих случаях существует много локальных переменных;где они могут храниться?
Они действительно могут храниться в том же месте, где они были изначально.Если переменные являются локальными для метода «doSomethingWith», просто переместите их в этот объект и перенастройте его в отдельный метод.Метод не должен обрабатывать обход, только обработку и может иметь свои собственные локальные переменные таким образом, которые работают только в его области действия.