![]()
![]()
![]()
public void thePostOrderTraversal_Stack(Node root) { //后序遍历
Stack<Node> stack = new Stack<Node>();
Stack<Node> output = new Stack<Node>();//构造一个中间栈来存储逆后序遍历的结果
Node node = root;
while (node != null || stack.size() > 0) {
if (node != null) {
output.push(node);
stack.push(node);
node = node.getRightNode();
} else {
node = stack.pop();
node = node.getLeftNode();
}
}
System.out.println(output.size());
while (output.size() > 0) {
printNode(output.pop());
}
}
//非递归后序遍历
public void NpostOrder(Node node){
Stack<Node> s1=new Stack<Node>();//第一次入栈
Stack<Node> s2=new Stack<Node>();//第二次入栈
Node n=node;
while(!s1.isEmpty()||n!=null){
if(n!=null){
s1.push(n);
s2.push(n);
n=n.rightNode;
}
else{
n=s1.pop();
n=n.leftNode;
}
}
while(!s2.isEmpty()){
System.out.println("((("+s2.pop().getKey());
}
}