实验目的:
1.掌握二叉树的二叉链表存储表示及遍历操作实现方法。
//完成二叉树的创建,先序遍历,中序遍历,后续遍历
#include<iostream>
#include<cstring>
using namespace std;
typedef char ElementType;
//二叉树二叉链表结点结构定义:
typedef struct node{
ElementType Data;
struct node *Lchild,*Rchild;
}BTnode;
//先前序创建二叉树
BTnode * PreCreateBt(BTnode* &t){ //指针的引用
char ch;
ch=getchar();
if(ch=='#') //输入#表示这里建立空的二叉树,及遍历算法的空操作
t=NULL;
else{
t=(BTnode *)malloc(sizeof(BTnode));
t->Data=ch;
t->Lchild=PreCreateBt(t->Lchild);
t->Rchild=PreCreateBt(t->Rchild);
}
return t;
}
//先序遍历
void PreOrderTransverse(BTnode *t){
if(t==NULL)
return ;
cout<<t->Data<<" "; //打印根节点,也可以定义其他操作
PreOrderTransverse(t->Lchild);
PreOrderTransverse(t->Rchild);
}
//中序遍历
void InOrderTransverse(BTnode *t){
if(t==NULL)
return ;
InOrderTransverse(t->Lchild);
cout<<t->Data<<" ";
InOrderTransverse(t->Rchild);
}
//后序遍历
void PostOrderTranseverse(BTnode *t){
if(t==NULL)
return ;
PostOrderTranseverse(t->Lchild);
PostOrderTranseverse(t->Rchild);
cout<<t->Data<<" ";
}
int main(){
BTnode *T;
PreCreateBt(T);
cout<<"创建完成二叉树!"<<endl<<endl;
cout<<"前序遍历二叉树"<<endl;
PreOrderTransverse(T);