//非递归前序遍历
static void NpreOrder(Node node){
Stack<Node> S=new Stack<Node>();
Node p=node;//初始的时候有2个值
while(!S.isEmpty()||p!=null){ //算法1,栈不为空或者p指向的不是空循环执行下面步骤
if(p!=null){ //算法2,当p指向的不是空的时候,将p指向结点进站
System.out.print("<<<");
System.out.print(n.getKey());
S.push(p); //结点进站
n=n.leftNode; //将指针指向左孩子
}
else{ //算法3,如果p指向为空::栈顶出栈并把值赋给指针
p=sk.pop();
p=p.rightNode;
}
}
}
static void NinOrder(BinTree node){
java.util.Stack<BinTree> s=new java.util.Stack<BinTree>(); //循环前的变量1做好准备
BinTree n=node; //变量2做好准备
while(n!=null||!s.isEmpty()){
if(n!=null){
s.push(n);
n=n.lchild;
}
else{
n=s.pop();
System.out.println(n.date);
n=n.rchild;
}
}}