例子:中序遍历非递归算法

实现代码:

//中序遍历的非递归算法
int InOrderTraverse_No_DiGui(BiTree T){
BiTree p; //顶底指向二叉树中节点的游标
InitStack(S); //初始化栈
p = T; //p指向所给的二叉树根节点
while(p || !StackEmpty(S)){
if(p){ //若当前节点非空
Push(S, p); //将当前节点入栈
p = p->lchild; //游标指向当前节点的左孩子
}else{
Pop(S, q); //出栈,将栈顶节点返回到一个二叉树节点类型的变量 q 中
printf("%c", q->data); //输出该节点的数据域
p = q->rchild; //游标指向当前节点的右孩子
}
}//while
return 1; //遍历结束
}
