描述:输入一串数字,建立二叉排序树,并进行先序,中序,后序遍历。
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
typedef struct Node
{
int data;
struct Node *lchild,*rchild;
} Node,*BiTree;
char str[30];
BiTree Build(BiTree T,int x)
{
if(T == NULL)
{
T = new Node();
T -> data = x;
return T;
}
else
{
if(x < T -> data)
{
T -> lchild = Build(T -> lchild,x);
}
else if(x > T -> data)
{
T -> rchild = Build(T -> rchild,x);
}
else
{
cout<<"输入序列有误"<<endl;
exit(0);
}
return T;
}
}
void InOrder(BiTree T)
{
if(T)
{
InOrder(T -> lchild);
cout<<(T -> data);
InOrder(T -> rchild);
}
}
void PreOrder(BiTree T)
{
if(T)
{
cout<<T -> data;
PreOrder(T -> lchild);
PreOrder(T -> rchild);
}
}
void PostOrder(BiTree T)
{
if(T)
{
PostOrder(T -> lchild);
PostOrder(T -> rchild);
cout<<T -> data;
}
}
int main()
{
cout<<"请输入数字序列:";
cin>>str;
int len;
len = strlen(str) - 1;
BiTree T = NULL;
for(int i = 0;i <= len;i++)
{
T = Build(T,str[i] - 48);
}
cout<<"二叉树的先序遍历为:";
PreOrder(T);
cout<<endl;
cout<<"二叉树的中序遍历为:";
InOrder(T);
cout<<endl<<"二叉树的后序遍历为:";
PostOrder(T);
cout<<endl;
}