//--二叉树的二叉链表存储表示---
typedef struct BiTNode{
TElemType data; //结点数据域
struct BiTNode *lchild, *rchild; //左右孩子指针
}BiTNode,*BiTree;
Status PreOrderTraverse(BiTree T)
{
if(T==NULL) return OK; //空二叉树
else{
visit(T); //访问根节点
PreOrderTraverse(T->lchild);
preOrderTraverse(T->rchild);
}
}
//二叉树中序遍历的非递归算法(伪代码)
void feidiguiInOrderTraverse(BiTree T)
{
InitStack(S);p=T;
q=new BiTNode;
while(p||!StackEmpty(S))
{
if(p) //p非空
{
Push(S,p); //根指针进栈
p=p->lchild; //根指针进栈,遍历左子树
}
else //p为空
{
Pop(S,p); //退栈
cout<<q->data; //访问根节点
p=q->rchild; //遍历右子树
}
}
}