数据结构中的二叉树的非递归中序遍历怎么实现不了
数据结构中的二叉树的非递归中序遍历怎么实现不了,求帮助啊!#include<stdio.h>
#include<stdlib.h>
typedef struct BiNode
{
char data;
struct BiNode * lchild;
struct BiNode * rchild;
}BiTNode,*BiTree;
typedef BiTNode QElemType;/* 设队列元素为二叉树的指针类型 */
typedef BiTNode SElemType;/* 设栈元素为二叉树的指针类型 */
typedef struct Node
{
SElemType * data;
struct Node * next;
}LinkStackNode,* LinkStack;
void InitStack(LinkStack &top)
{
top=(LinkStack)malloc(sizeof(LinkStackNode));
top->next=NULL;
}
void Push(LinkStack & top,BiTree e)
{
LinkStack temp;
temp=(LinkStackNode*)malloc(sizeof(LinkStackNode));
if(temp==NULL)
exit;
temp->data=e;
temp->next=top->next;
top->next=temp;
}
void Pop(LinkStack &top,BiTree e)
{
LinkStack temp;
temp=top->next;
if(temp==NULL)
printf("栈为空,请从新选择\n");
top->next=temp->next;
e=temp->data;
free(temp);
}
int GetTop(LinkStack &top,BiTree &e)
{
LinkStack temp;
temp=top->next;
if(temp==NULL)
printf("栈为空,请从新选择\n");
e=temp->data;
return 1;
}
void InOrderTraverse(BiTree T)/*非递归中序遍历二叉树*/
{
LinkStack S;
InitStack(S);
BiTree p=T;
Push(S,p);
while(S->next!=NULL)
{
while(GetTop(S,p)&&p)
Push(S,p->lchild);
Pop(S,p);
if(S->next!=NULL)
{
Pop(S,p);
printf("%c",p->data);
Push(S,p->rchild);
}
}
}