报错说明:
‘getche’:The POSIX name for this item is deprecated. lnstead,use the ISO C and C++ conformant name:_getche. See online help for details.
使用的是:Visual studio 2019
#include
#include
#include<malloc.h>
#include
#include<process.h>
#include<conio.h>
using namespace std;
#define MAX 20
typedef struct BTNode
{ //节点结构说明
char data;
struct BTNode * lchild;
struct BTNode * rchild;
} *BiTree;
void createBiTree(BiTree *t)
{
char s;
BiTree q;
cout<<endl;
cout<<"请输入数据:(退出用#)";
s=_getche();
if(s=='#')
{
*t=NULL;
return;
}
q=(BiTree)malloc(sizeof(struct BTNode));
if(q==NULL)
{ cout<<"内存分配失败!";
exit(0);
}
q->data=s;
*t=q;
createBiTree(&q->lchild);
createBiTree(&q->rchild);
}
void PreOrder(BiTree p)
{
if(p!=NULL)
{ cout<<setw(5)<data;
PreOrder(p->lchild);
PreOrder(p->rchild);
}
}
void InOrder(BiTree p)
{
if(p!=NULL)
{ InOrder(p->lchild);
cout<<setw(5)<data;
InOrder(p->rchild);
}
}
void PostOrder(BiTree p)
{
if(p!=NULL)
{ PostOrder(p->lchild);
PostOrder(p->rchild);
cout<<setw(5)<data;
}
}
void Preorder_n(BiTree p)
{
BiTree stack[MAX],q;
int top=0,i;
for(i=0;i<MAX;i++)stack[i]=NULL;
q=p;
while(q!=NULL)
{ cout<<setw(5)<data;
if(q->rchild!=NULL)stack[top++]=q->rchild;
if(q->lchild!=NULL)q=q->lchild;
else if(top>0)q=stack[--top];
else q=NULL;
}
}
void release(BiTree t)
{
if(t!=NULL)
{ release(t->lchild);
release(t->rchild);
free(t);
}
}
int main()
{ BiTree t=NULL;
createBiTree(&t);
cout<<endl;
cout<<"前遍历树是:"<<endl;
PreOrder(t);
cout<<endl;
cout<<"中序遍历树是:"<<endl;
InOrder(t);
cout<<endl;
cout<<"后序遍历树是:"<<endl;
PostOrder(t);
cout<<endl;
cout<<"先序遍历序列(非递归):"<<endl;
Preorder_n(t);
release(t);
return 0;
}