//先序遍历非递归算法的实现 用到自定义的栈
void preOrderNonrecursion(BTNode *bt)
{
if(bt !=null)
{
BTNode *stack[maxSize]; //先定义一个栈用于存放遍历的二叉树
int top=-1;
BTNode *P;
stack[++top]=bt; //元素进栈
while(top!=-1) //进栈不空条件下执行
{
p=stack[top--]; //出栈操作
visit(p); //事先定义好的打印节点的操作
if(p->rchild!=null) //先右子树进栈
stack[++top]=p->rchild;
if(p->lchild!=null) //再左子树进栈
stack[++top]=p->lchild;
}
}
}