二叉树
定义结构体
typedef struct btnode{
char data;
struct btnode *lchild,*rchild;
}Btnode,*Bitree;
创建树
void create(Bitree &T)
{
char ch;
ch=getchar();
if(ch==' ')T=NULL;
else
{
T= new Btnode;
T->data=ch;
create(T->lchild);
create(T->rchild);
}
}
先序,中序,后序分别是
//先序
void preord(Bitree T)
{
if(T)
{
cout<<T->data;
preord(T->lchild);
preord(T->rchild);
}
}
//中序
void inord(Bitree T)
{
if(T)
{
inord(T->lchild);
cout<<T->data;
inord(T->rchild);
}
}
//后序
void posord(Bitree T)
{
if(T)
{
posord(T->lchild);
posord(T->rchild);
cout<<T->data;
}
}
完整代码如下:
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
typedef struct btnode{
char data;
struct btnode *lchild,*rchild;
}Btnode,*Bitree;
void create(Bitree &T)
{
char ch;
ch=getchar();
if(ch==' ')T=NULL;
else
{
T= new Btnode;
T->data=ch;
create(T->lchild);
create(T->rchild);
}
}
//先序
void preord(Bitree T)
{
if(T)
{
cout<<T->data;
preord(T->lchild);
preord(T->rchild);
}
}
//中序
void inord(Bitree T)
{
if(T)
{
inord(T->lchild);
cout<<T->data;
inord(T->rchild);
}
}
//后序
void posord(Bitree T)
{
if(T)
{
posord(T->lchild);
posord(T->rchild);
cout<<T->data;
}
}
int main()
{
Bitree T;
cout<<"请输入要创建的二叉树的先序序列:"<<endl;
create(T);
cout<<"请输出二叉树的先序序列:"<<endl;
preord(T);
cout<<endl;
cout<<"请输出二叉树的中序序列:"<<endl;
inord(T);
cout<<endl;
cout<<"请输出二叉树的后序序列:"<<endl;
posord(T);
cout<<endl;
return 0;
}