二叉排序树与平衡二叉树

二叉排序树与平衡二叉树

ID:9311027

大小:49.50 KB

页数:11页

时间:2018-04-27

二叉排序树与平衡二叉树_第1页
二叉排序树与平衡二叉树_第2页
二叉排序树与平衡二叉树_第3页
二叉排序树与平衡二叉树_第4页
二叉排序树与平衡二叉树_第5页
资源描述:

《二叉排序树与平衡二叉树》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#definemaxsize100#defineEQ(a,b)((a)==(b))#defineLT(a,b)((a)<(b))#defineLQ(a,b)((a)>(b))#defineLH1//左高#defineEH0//等高#defineRH-1//右高typedefstructnode//定义二叉树排序的结点{intdata;//数据域structnode*left,*right;//left指向左孩子,ringt指向右孩子们}dnode;t

2、ypedefstructBSTNode//定义二叉平衡树的结点{intdata;intbf;//结点的平衡因子structBSTNode*left,*right;}BSTNode,*BSTree;intn=0,m=0,total=0;inta[30];intn1=0,m1=0,total1=0;intn2=0,m2=0,total2=0;voidsort(dnode*t,intc)//将c插入到二叉排序树t中{dnode*p;if(c>=t->data)if(t->right==NULL){p=(dnode*)mall

3、oc(sizeof(dnode));p->data=c;p->left=p->right=NULL;t->right=p;}elsesort(t->right,c);if(cdata)if(t->left==NULL){p=(dnode*)malloc(sizeof(dnode));p->data=c;p->left=p->right=NULL;t->left=p;}elsesort(t->left,c);}dnode*creat()//创建二叉排序树{dnode*ht;intc;chark;ht=(dnode

4、*)malloc(sizeof(dnode));printf("输入数据,按回车键结束:");scanf("%d%c",&c,&k);ht->data=c;n++;ht->left=ht->right=NULL;if(k!='')while(1){scanf("%d%c",&c,&k);sort(ht,c);n++;if(k=='')break;}returnht;}voidinorder(dnode*t)//中序遍历二叉排序树{if(t!=NULL){m++;inorder(t->left);printf("

5、%d",t->data);total+=m;inorder(t->right);m--;}}voidasl(intx)//计算平均查找长度{floats;if(x==1){s=(float)total/n;printf("n:%d,total:%d,asl:%3.2f",n,total,s);}elseif(x==2){s=(float)total1/n1;printf("n:%d,total:%d,asl:%3.2f",n1,total1,s);}else{s=(float)total2/n2;printf(

6、"n:%d,total:%d,asl:%3.2f",n2,total2,s);}}voidfind(dnode*t,intx,dnode*a[])//将数据域为x的结点的地址给a[0],其父结点的地址给a[1]{dnode*p,*q;p=t;if(p->data==x){a[0]=p;a[1]=NULL;return;}for(;;){if(x>p->data){q=p;if(p->right==NULL){a[0]=a[1]=NULL;return;}p=p->right;if(p->data==x){a[0]=

7、p;a[1]=q;return;}}if(xdata){q=p;if(p->left==NULL){a[0]=a[1]=NULL;return;}p=p->left;if(p->data==x){a[0]=p;a[1]=q;return;}}}}dnode*del(dnode*t)//删除x结点{dnode*p,*q,*s,*f,*a[2];intflag=0,x;p=(dnode*)malloc(sizeof(dnode));f=(dnode*)malloc(sizeof(dnode));printf("en

8、terx:");scanf("%d",&x);find(t,x,a);p=a[0];f=a[1];if(p==NULL){printf("NOFOUND!");exit(0);}if(p->left==NULL)//左子树为空,重接右子树s=p->right;elseif(p->right==NULL)//右子树为空,重接左子

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。