#include <iostream>
#include <stdlib.h>
using namespace std;
struct BiTNode;
typedef struct BiTNode* PBiTNode;
struct BiTNode
{
char data;
PBiTNode lchild, rchild;
};
typedef BiTNode* BinTree;
//创建二叉树T,先序
void createBiTree(BinTree &t)
{
char c;
t=(BinTree)malloc(sizeof(BiTNode));
cin >> c;
if (c=='#')
t=NULL;
else
{
t->data=c;
createBiTree(t->lchild);
createBiTree(t->rchild);
}
}
//先序遍历
void PreOrder(BinTree t)
{
if (t==NULL)
return ;
else
{
cout << (t->data) << " ";
PreOrder(t->lchild);
PreOrder(t->rchild);
}
}
//中序遍历
void InOrder(BinTree t)
{
if (t==NULL)
return ;
else
{
InOrder(t->lchild);
cout << t->data << " ";
InOrder(t->rchild);
}
}
//后序遍历
void PostOrder(BinTree t)
{
if (t==NULL)
return ;
else
{
PostOrder(t->lchild);
PostOrder(t->rchild);
cout << t->data << " ";
}
}
//层序遍历,从左到右
void LevelOrder(BinTree t)
{
int front=0,rear=1;
BiTNode *q[100];
q[0]=t;
while(front<rear)
{
if(q[front])
{
cout << q[front]->data <<" ";
q[rear++]=q[front]->lchild;
q[rear++]=q[front]->rchild;
front++;
}
else
{
front++;
}
}
}
int main()
{
BinTree t;
cout<<"先根创建二叉树:"<<endl;
createBiTree(t);
cout<<"先根遍历: ";
PreOrder(t);
cout<<endl;
cout<<"中根遍历: ";
InOrder(t);
cout<<endl;
cout<<"后根遍历: ";
PostOrder(t);
cout<<endl;
cout<<"层序遍历,从左到右: ";
LevelOrder(t);
cout<<endl;
return 0;
}
#include <stdlib.h>
using namespace std;
struct BiTNode;
typedef struct BiTNode* PBiTNode;
struct BiTNode
{
char data;
PBiTNode lchild, rchild;
};
typedef BiTNode* BinTree;
//创建二叉树T,先序
void createBiTree(BinTree &t)
{
char c;
t=(BinTree)malloc(sizeof(BiTNode));
cin >> c;
if (c=='#')
t=NULL;
else
{
t->data=c;
createBiTree(t->lchild);
createBiTree(t->rchild);
}
}
//先序遍历
void PreOrder(BinTree t)
{
if (t==NULL)
return ;
else
{
cout << (t->data) << " ";
PreOrder(t->lchild);
PreOrder(t->rchild);
}
}
//中序遍历
void InOrder(BinTree t)
{
if (t==NULL)
return ;
else
{
InOrder(t->lchild);
cout << t->data << " ";
InOrder(t->rchild);
}
}
//后序遍历
void PostOrder(BinTree t)
{
if (t==NULL)
return ;
else
{
PostOrder(t->lchild);
PostOrder(t->rchild);
cout << t->data << " ";
}
}
//层序遍历,从左到右
void LevelOrder(BinTree t)
{
int front=0,rear=1;
BiTNode *q[100];
q[0]=t;
while(front<rear)
{
if(q[front])
{
cout << q[front]->data <<" ";
q[rear++]=q[front]->lchild;
q[rear++]=q[front]->rchild;
front++;
}
else
{
front++;
}
}
}
int main()
{
BinTree t;
cout<<"先根创建二叉树:"<<endl;
createBiTree(t);
cout<<"先根遍历: ";
PreOrder(t);
cout<<endl;
cout<<"中根遍历: ";
InOrder(t);
cout<<endl;
cout<<"后根遍历: ";
PostOrder(t);
cout<<endl;
cout<<"层序遍历,从左到右: ";
LevelOrder(t);
cout<<endl;
return 0;
}