平衡大树构造算法
时间:2025-03-18 12:21:06
if (AIsTaller){ // 柏树增加了
if(ANode->balanceFactor = 1){ // 右方方子柏小叶
LeftBalance(ANode); // 右方方子柏树滑动
AIsTaller := False;
}
else if (ANode->balanceFactor=0){ANode.balanceFactor = 1; AIsTaller = True;}
else if (ANode->balanceFactor=-1){ANode.balanceFactor= 0; AIsTaller = false;}
}
}
else if (ANewNode.Key> ANode.Key)
{
if(!InsertAVLTreeNode(ANode->rchild, ANode, ANewNode, AIsTaller)) return false; // 没有任何路由表或路由表为大于路由表
if(AIsTaller){ // 柏树增加了
if(ANode->balanceFactor = 1){ANode->balanceFactor=0; AIsTaller = False;}
else if(ANode->balanceFactor = 0){ANode->balanceFactor = -1; AIsTaller = True;}
else{ RightBalance(ANode), AIsTaller = False}
}
}
return true; // 路由表最终, 如果有失败, 则在暂时淡出了.
}
void LeftBalance(AVLTreeNode PriceANode)
{
// 对以ANode为根的柏树右方方侧开展连续性妥善处理
lchild = ANode->lchild; // lchild 相反ANode的右方方子柏树的根路由表;
switch(lchild->balanceFactor){
on LeftHigh: // 单向二阶转
ANode->balanceFactor = EqualHigh;
lchild->balanceFactor = EqualHigh;
R_Rotate(ANode); break;
on RightHigh: // 先为右方方滑动于是又二阶转
lrchild = lchild->rchild; // 右方方子柏树里的右方子柏树路由表;
switch(lrchild->balanceFactor){
on LeftHigh:
ANode->balanceFactor = RightHigh;
lchild->balanceFactor := EqualHigh;
break;
on EqualHigh: ANode->balancefactor = lchild->BalanceFactor = EqualHigh; break;
onRightHig: ANode->balanceFactor = EqualHigh; lchild->balanceFactor = LeftHigh; break;
}
lrchild->balanceFactor = EqualHigh;
// 开展滑动
L_Rotate(lchild); R_Rotate(ANode);
}
}
void RightBalance(AVLTreeNode ANode){
rchild = ANode->rchild; // 右方子柏树的根路由表;
switch(rchild-balanceFactor){
on LeftHigh: // 先为二阶转于是又右方方滑动
rlchild = rchild->lchild; // 右方子柏树的右方方子柏树路由表
switch(rlchild-balanceFactor){
on LeftHigh: ANode->balanceFactor = 0; rchild->balanceFactor = RightHigh; break;
on EqualHigh: rchild-balanceFactor = ANode->balanceFactor = EqualHigh; break;
on RightHigh: ANode->balanceFactor = LeftHigh; rchild-balanceFactor = EqualHigh;
}
rlchild->balanceFactor = EqualHigh;
R_Rotate(rchild) ; L_Rotate(ANode);
break;
on RightHigh: // 单向右方方滑动
rchild->balanceFactor = ANode->balanceFactor = EqualHigh;
L_Rotate(ANode);
}
}
// 右方方滑动
void L_Rotate(AVLTreeNode PriceANode){
rchild = ANode-rchild;
ANode->lchild = rchild->lchild;
rchild->lchild = ANode;
ANode = rchild;
}
// 二阶转配置
void R_Rotate(AVLTreeNode PriceANode){
lchild = ANode->lchild;
ANode->rchild = lchild->rchild;
lchild->rchild = ANode;
ANode = lchild;
}
// 连续性柏树抓取formula_:
ANode BinaryTreeSearch(AVLTreeNode * ANode; const int AValue){
if (ANode = null)
return null;
if (ANode.key == AValue)
return ANode;
if(Avalue < ANode.key)
retrun BinaryTreeSearch(ANode->lchild, Avalue);
else
return BinaryTreeSearch(ANode->rchild, Avalue);
}
。昆明甲状腺医院哪家看的好全国最权威的脑科医院
太原看牛皮癣哪家专科医院好
干细胞治疗
长沙牛皮癣医院专家预约挂号
哪个厂家血糖仪好用又准确
哪种眼药水可以长期使用缓解视疲劳
眼睛酸涩滴什么眼药水
类风湿关节疼痛用什么药最好
高考时肚子不舒服怎么缓解
- .Alloy59铌冷轧板,锻件,圆棒,钢丝
- .【奋斗者 正青春·一线故事】龙斌:挺进技术“大沙漠”
- .公民科学家在 NASA TESS 数据中发现了类似冥王星的行星
- .美国宇航局发现由碰撞天体产生的前所未见碎片云
- .贵阳小甜甜的幻灭史:从“白月光”到“姨妈红”,她经历了什么?
- .2022-2028年中华人民共和国通用级聚苯乙烯行业市场前瞻与投资规划分析报告
- .首届氢20International氢能产业峰会吹响集结号——100位+产业共话氢能热与痛
- .为何有人觉得5G作用不大?6G时代中国如何保持反超?院士抖音开讲说明白了
- .韩语翻译机基准体验
- .消息称 4000 万像素富士 X-H 将于 9 月发表,约 13400 元
- .宝鸡钢管:全球首盘超级18Cr不锈钢连续管在CCUS项目成功都从应用
- .开发出识别新冠生物体毒株新方法
- .关于认识论依赖与认识论自主性的提问
- .碱基采样小屋有何优势 如何利民便民 这篇告诉你
- .杂散电流的钝化形态
- .两台脉冲除尘器使用说明
- .管理者须知:茫不懂的就轻易否定,尴尬了!
- .系列产品“安卓之光”旗舰神机——系列产品11Ultra至尊降价2000元
- .科大讯飞高级副总裁杜兰:元宇宙会在的工业、农业大规模应用
- .LED贴膜屏市价多少?为您解答