1 / 11
文档名称:

数据结构与算法实验二叉树基本操作.doc

格式:doc   大小:296KB   页数:11
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构与算法实验二叉树基本操作.doc

上传人:260933426 2022/2/14 文件大小:296 KB

下载得到文件列表

数据结构与算法实验二叉树基本操作.doc

文档介绍

文档介绍:二叉树基本操作
实验报告
二叉树基本操作实验报告
实验名称
二叉树基本操作
实验目的
熟悉二叉树结点的结构和二叉树的基本操作;
掌握二叉树每种操作的具体实现;
学会利用递归方法编写对二叉树这种递归数据结构进行处理;
PreOrderTraverse(p->lchild);
PreOrderTraverse(p->rchild);
}
}
//中序遍历
void InOrderTraverse(BiTNode *p){
if(p!=NULL){
InOrderTraverse (p->lchild);
printf("%c ",p->data);
InOrderTraverse (p->rchild);
}
}
//后序遍历
void PostOrderTraverse(BiTNode *p){
if(p!=NULL){
PostOrderTraverse(p->lchild);
PostOrderTraverse(p->rchild);
printf("%c ",p->data);
}
}
//层序遍历
void LevelOrderTraverse(BiTNode *T){
BiTNode *queue[500],*p=T;
int front=0,rear=0;
if(p!=NULL){
queue[++rear]=p; //根结点入队
while(front<rear){
p=queue[++front];
printf("%c ",p->data);
if (p->lchild!=NULL) queue[++rear]=p->lchild; //左结点入队
if (p->rchild!=NULL) queue[++rear]=p->rchild; //左结点入队
}
}
}
//计算结点数
int Countnode(BiTNode *T){
int sum;
if(T==NULL) return 0;
sum=1+Countnode(T->lchild)+Countnode(T->rchild);
return(sum);
}
//计算叶子数
int Countleaf(BiTNode *T)
{
if(T==NULL) return 0;
else
if(T->lchild==NULL&&T->rchild==NULL) return 1;
else
return Countleaf(T->lchild)+Countleaf(T->rchild);
}
//计算深度
int Countlevel(BiTNode *T){
int k;
if(T==NULL) return 0;
if(Countlevel(T->lchild)>Countlevel(T->rchild))
k=1+Countlevel(T->lchild);
else k=1+Countlevel(T->rchild);
return k;
}
// 检验二叉树是否为空
int BinTreeEmpty(BiTNode *T)
{
if(T==NULL)
return 1;
else
return 0;
}
// 清空二叉树
void BinTreeClear(BiTNode *T)
{
if(T==NULL)
{
return;
}
if(T->lchild)
{
BinTreeClear(T->lchild);
free(T->lchild);
}
if(T->rchild)
{
BinTreeClear(T->rchild);
free(T->rchild);
}
}
int main(){
int cmd,mode,res,flag;
BiTNode *T;
while(1){
printf("===============菜单==============\n");
printf("\t1:初始化\n\