- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(平衡二叉树实现代码
数据结构算法:平衡二叉树实现代码
找了很久才找到的平衡二叉树实现代码
#include stdio.h
typedef struct bitreetype
{
int item;
int bdegree;/*平衡因子,左子树深度-右子树深度*/
struct bitreetype *lchild;
struct bitreetype *rchild;
}bitree;
typedef struct treequeuetype
{
int head;
int tail;
bitree *items[1000];
}treequeue;/*定义一个队列,后面的平衡调整要用层序遍历,于是要用这个队列*/
void resetqueue(treequeue *queue)
{
queue-head=-1;
queue-tail=-1;
return;
}/*把队列清空*/
void inqueue(treequeue *queue,bitree *element)
{
queue-tail++;
queue-items[queue-tail]=element;
}/*入队列*/
bitree *outqueue(treequeue *queue)
{
queue-head++;
return queue-items[queue-head];
}/*出队列*/
int isqueueempty(treequeue *queue)
{
if(queue-head==queue-tail)
return 1;
else
return 0;
}/*判断队列是否为空*/
void fillmemory(char *source,int len,char content)
{
while(len)
{
source=source+len;
*source=content;
source=source-len;
len--;
}
*source=0;
}/*用CONTENT的内容去FILL以SOURCE为首,LEN长度的一块空间,初始化内存方便*/
int getnums(int *dst)/*输入字符串并把字符串转化为一串数存入DST指向的内存中去,我们用它采集原始数据*/
{
char *temp,*num,*p,t;
int len=0;
temp=(char *)malloc(1000*sizeof(char));
num=(char *)malloc(20*sizeof(char));
p=num;
fillmemory(temp,1000,0);
fillmemory(num,20,0);
scanf(\%s\,temp);
t=*temp;
temp++;
while(t)
{
if(t!=\’,\’)
{
*num=t;
num++;
t=*temp;
temp++;
}/*抽出一个数放入NUM临时空间中*/
else
{
num=p;
*dst=atoi(num);
len++;
fillmemory(num,20,0);
dst++;
t=*temp;
temp++;
}/*将NUM中的数字转化出来存入DST中*/
}
num=p;
*dst=atoi(num);
len++;
fillmemory(num,20,0);
dst++;
t=*temp;
temp++;
return len;
}/*处理最后一个数字*/
/*****唉,写上面的函数时都两个月没写过C了,所以可能上面的函数条理相当差的说*****/
void insertbitree(bitree *head,int source)/*向以HEAD为头结点的排序二叉树中插入一个以SOURCE为内容的点*/
{
if(source=head-item)
{
if(head-lchild==NULL)
{
head-lchild=(bitree *)malloc(sizeof(bitree));
head-lchild-item=source;
head-lchild-lchild=NULL;
head-lchild-rchild=NULL;
head-lchild-bdegree=0;
}
else
insertbitree(head-lchild,sour
您可能关注的文档
最近下载
- 普通高中音乐课程标准(2017年版2020年修订).docx
- T_JSFPSA -001-2022_全麦面包_标准.pdf VIP
- GB50702-2011砌体结构加固设计规范.docx VIP
- 《特高压电力管廊盾构隧道结构施工及运营期验收评估标准》.pdf VIP
- 15、推理综合 举一反三 2024—2025学年度 小学二年级奥数 教学课件PPT.pptx VIP
- 项目式学习在小学英语教学中的实践教学研究课题报告.docx
- matlab课件(西工大-孙蓬).pptx
- 香港上市(IPO)全流程介绍(最完整版).pdf VIP
- GBT50319-2013建设工程监理规范表格-全部[整理].doc VIP
- 09S302雨水斗选用及安装图集(清晰).pdf VIP
文档评论(0)