я нашел эту ссылку, http://www.experts-exchange.com/Programming/Algorithms/Q_25205171.html, в котором предлагается способ выполнения хвостовой рекурсии в обратном порядке. однако он использует 2 стека, есть ли способ сделать это только с одним стеком. Спасибо!
ниже приведен код Java, вставленный по ссылке выше:
public static final <T> void postorder(Tree<T> root) {
Stack<Tree<T>> stack = new Stack<Tree<T>>();
Stack<Tree<T>> traversal = new Stack<Tree<T>>();
stack.push(root);
while (!stack.isEmpty()) {
Tree<T> node = stack.pop();
if (node.right != null)
stack.push(node.right);
}
if (node.left != null) {
stack.push(node.left);
}
traversal.push(node);
}
while (!traversal.isEmpty()) {
System.out.println(traversal.pop().value.toString());
}
}
{}в редакторе для форматирования кода в следующий раз. - person Mat   schedule 27.03.2011