- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
/*************************平衡二叉树**********************/
typedef struct BSTNode
{
ElemType data;
int bf;
struct BSTNode *lchild,*rchild;
} BSTNode, *BSTree
void R_Rotate (BSTree p)
{ //以*p为根的二叉树右旋处理,旋转后p指向新的树根结点
lc = p-lchild;
p-lchild = lc-rchild;
lc-rchild = p; p = lc;
} // R_Rotate
void L_Rotate (BSTree p)
{ //以*p为根的二叉树左旋处理,旋转后p指向新的树根结点
rc=p-rchild;
p-rchild=rc-lchild;
rc-lchild=p; p=rc;
} // R_Rotate
#define LH 1 //左高
#define EH 0 //等高
#define RH -1 //右高
Status InsertAVL (BSTree T, ElemType e, int taller)
{ /*若在平衡的二叉排序树T中不存在和e相同关键字的结点,则插入,并返回1,否则返回0。若因插入而使二叉排序树失去平衡,则做相应的平衡旋转处理*,taller反映T长高与否*/
if(!T) //插入新结点,树长高
{ T = (BSTree) malloc (sizeof(BSTNode));
T-data=e;
T-lchild=T-rchild=NULL;
T-bf=EH; taller=TRUE;
}
else
{ if (e==T-data) {taller=FALSE; return 0;} //已存在e,不插入
if (eT-data) //在左子树中搜索
{
if (!InsertAVL(T-lchild,e,taller)) return 0;//在左子树中找到e不插入
if(taller) //已插入到左子树中
switch(T-bf) //检查原本*T的平衡度
{
case LH: LeftBalance(T); taller=FALSE; break;
case EH: T-bf=LH; taller=TRUE; break;
case RH: T-bf=EH; taller=FALSE; break;
} //switch
} //if
else
{ //在右子树中搜索
if( !InsertAVL(T-rchild,e,taller)) return 0;
if( taller)
switch(T-bf)
{
case LH: T-bf=EH; taller=FALSE; break;
case EH: T-bf=RH; taller=TRUE; break;
case RH: RightBalance(T); taller=FALSE; break;
} //switch
} //else
} //else
return 1;
} //InsetAVL
void LeftBalance (BSTree T)
{
lc=T-lchild;
switch ( lc-bf ) //检查*T左子树平衡度
{ case LH: //新结点插在*T的左孩子的左子树上
T-bf=lc-bf=EH; R_Rotate(T); break;
case RH: //新结点插在*T的左孩子的右子树上
rd = lc-rchild;
swith(rd-bf)
{ case LH: T-bf = RH; lc-bf = EH; break;
case EH: T-bf = lc-bf = EH; break;
case RH: T-bf = EH; lc-bf=LH; break;
} //swith(rd-bf)
rd-bf=EH;
L_Rotate(T-lchild); //*T的左子树左旋
R_Rotate(T); //*T的右旋
}// switch(lc-bf)
} //LeftBalance
您可能关注的文档
- 《机械CADCAMa》教学大纲.doc
- 《计算机图形学》教学参考书目.doc
- 《离散数学课程实验》大纲.doc
- 《模流分析基础入门》1.doc
- 《软件工程》复习题1和答案.doc
- 《软件工程练习题及参考答案》.doc
- 《商务网站模拟与实现》模板(适用09级信管&电商).doc
- 《数据结构01》复习题_答案.doc
- 《数据结构02》复习题及答案.doc
- 《数据结构》(开放本科)课程教学一体化设计方案.doc
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
最近下载
- 《七律·长征》公开课教学PPT课件【部编人教版六年级语文上册】.ppt VIP
- 《基于深度学习的电商用户行为预测与精准营销策略优化》教学研究课题报告.docx
- 塔吊法福克M1280D说明书.pdf
- 管理者角色转身:从业务能手到团队领导者的蜕变.pptx
- 2025年上海市中考英语试卷(含听力文稿及参考答案)(2).pdf VIP
- GB 14784-2013 带式输送机 安全规范.docx VIP
- 弱电智能化工程质量管理.pdf VIP
- 铁路专业部分常用词汇中英文对照表.docx VIP
- 常见化疗药物及运用PPT课件.pptx VIP
- 2025年汽车驾驶员高级技师基本理论知识考试题附含答案.docx VIP
文档评论(0)