void preOrder(biTree T){
InitStack(S);biTree p=T;//初始化栈s, p为遍历指针
while(!p&&||!isEmpty(S)){//当二叉树或栈只要有一个不为空时,进行如下操作
if(p){//一路向左
visit(p);push(S,p);//访问第一个元素,然后入栈
p=p->lchild;//指向左孩子
}
else{
pop(S,p); //当没有 左孩子时,弹出栈
p=p->rchild; //访问右孩子
}
}
}
递归的话很简单,只需判断二叉树不为空然后依次根左右顺序遍历即可。
void preOrder(biTree T){
if(T!=Null){
visit (T);
preOrder(T->lchild);
preOrder(T->rchild);
}
}