void mid2_order (BTreeNode *node)
{
if (node == NULL)
{
errno = ERROR;
return;
}
LinkStack *Stack = Create_Stack ();
BTreeNode *tmp = node; //指向当前节点
while (tmp)
{
Push (Stack,tmp);
if (tmp->lchild)
{
tmp = tmp->lchild;
continue;
}
tmp = tmp->rchild;
while(tmp == NULL && Pop (Stack,&tmp))
{
printf("%4c",tmp->data);
tmp = tmp->rchild;
}
}
}
//中序遍历(老师的)
void mid1(BTreeNode *root)
{
if(root == NULL)
return;
LinkStack *stack = CreateStack();
BTreeNode* p = root;
while (p != NULL || !StackEmpty(stack))
{
while(p)
{
Push(stack, p);
p = p->lchild;
}
if (!StackEmpty(stack))
{
Pop (stack, &p);
printf ("%4c", p->data);
p = p->rchild;
}
}
}