大大数据结构实验报告材料Word格式文档下载.docx

上传人:b****2 文档编号:15288260 上传时间:2022-10-29 格式:DOCX 页数:16 大小:153.32KB
下载 相关 举报
大大数据结构实验报告材料Word格式文档下载.docx_第1页
第1页 / 共16页
大大数据结构实验报告材料Word格式文档下载.docx_第2页
第2页 / 共16页
大大数据结构实验报告材料Word格式文档下载.docx_第3页
第3页 / 共16页
大大数据结构实验报告材料Word格式文档下载.docx_第4页
第4页 / 共16页
大大数据结构实验报告材料Word格式文档下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

大大数据结构实验报告材料Word格式文档下载.docx

《大大数据结构实验报告材料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《大大数据结构实验报告材料Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。

大大数据结构实验报告材料Word格式文档下载.docx

//数据域

structBiTNode*lChild,*rChild;

//左右子树域

}BiTNode,*BiTree;

intInsertBST(BiTree&

T,intkey){//插入二叉树函数

if(T==NULL)

{

T=(BiTree)malloc(sizeof(BiTNode));

T->

data=key;

lChild=T->

rChild=NULL;

return1;

}

elseif(key<

T->

data){

InsertBST(T->

lChild,key);

}

elseif(key>

InsertBST(T->

rChild,key);

else

return0;

BiTreeCreateBST(inta[],intn){//创建二叉树函数

BiTreebst=NULL;

inti=0;

while(i<

n){

InsertBST(bst,a[i]);

i++;

returnbst;

intDelete(BiTree&

T)

{

BiTreeq,s;

if(!

(T)->

rChild){//右子树为空重接它的左子树

q=T;

T=(T)->

lChild;

free(q);

}else{

if(!

lChild){//若左子树空则重新接它的右子树

q=T;

T=(T)->

rChild;

}else{

s=(T)->

while(s->

rChild){

q=s;

s=s->

}

(T)->

data=s->

data;

//s指向被删除结点的前驱

if(q!

=T)

q->

rChild=s->

else

lChild=s->

free(s);

}

return1;

}

//删除函数,在T中删除key元素

intDeleteBST(BiTree&

T,intkey){

T)return0;

else{

if(key==(T)->

data)returnDelete(T);

else{

if(key<

data)

returnDeleteBST(T->

intPosttreeDepth(BiTreeT){//求深度

inthr,hl,max;

T==NULL){

hl=PosttreeDepth(T->

lChild);

hr=PosttreeDepth(T->

rChild);

max=hl>

hr?

hl:

hr;

returnmax+1;

else

voidprinttree(BiTreeT,intnlayer){//打印二叉树

if(T==NULL)return;

printtree(T->

rChild,nlayer+1);

for(inti=0;

i<

nlayer;

i++){

printf("

"

);

%d\n"

T->

data);

lChild,nlayer+1);

voidPreOrderNoRec(BiTreeroot)//先序非递归遍历

{

BiTreep=root;

BiTreestack[50];

intnum=0;

while(NULL!

=p||num>

0)

while(NULL!

=p)

{

printf("

%d"

p->

stack[num++]=p;

p=p->

num--;

p=stack[num];

p=p->

\n"

voidInOrderNoRec(BiTreeroot)//中序非递归遍历

printf("

voidPostOrderNoRec(BiTreeroot)//后序非递归遍历

BiTreehave_visited=NULL;

p=stack[num-1];

if(NULL==p->

rChild||have_visited==p->

rChild)

num--;

have_visited=p;

p=NULL;

else

intmain(){//主函数

---------------------二叉排序树的实现-------------------"

intlayer;

inti;

intnum;

输入节点个数:

"

scanf("

%d"

&

num);

依次输入这些整数(要不相等)"

int*arr=(int*)malloc(num*sizeof(int));

for(i=0;

num;

scanf("

arr+i);

BiTreebst=CreateBST(arr,num);

二叉树创建成功!

layer=PosttreeDepth(bst);

树状图为:

printtree(bst,layer);

intj;

intT;

intK;

for(;

;

){

loop:

***********************按提示输入操作符************************:

1:

插入节点2:

删除节点3:

打印二叉树4:

非递归遍历二叉树5:

退出"

j);

switch(j){

case1:

输入要插入的节点:

scanf("

T);

InsertBST(bst,T);

插入成功!

printf("

printtree(bst,layer);

break;

case2:

输入要删除的节点"

K);

DeleteBST(bst,K);

删除成功!

case3:

layer=PosttreeDepth(bst);

case4:

非递归遍历二叉树"

先序遍历:

PreOrderNoRec(bst);

中序遍历:

InOrderNoRec(bst);

后序遍历:

PostOrderNoRec(bst);

case5:

程序执行完毕!

return0;

gotoloop;

return0;

对于第四小问,要储存学生的三个信息,需要把上面程序修改一下,二叉树结构变为

typedefstringSlemType;

SlemTypename;

ElemTypescore;

ElemTypeno;

参数不是key,而是另外三个

T,intno,intscore,stringname){//插入二叉树函数

no=no;

name=name;

score=score;

elseif(no<

no){

lChild,no,score,name);

elseif(k

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1