文章标题
来源:互联网 发布:qq飞车高压数据 编辑:程序博客网 时间:2024/06/10 02:12
AVL树
默写。
#define LH 1#define EH 0#define RH -1typedef struct ssNode{int data;struct Node* left;struct Node* right;int bf;}Node,*BSTree;void L_Rotate(BSTree & T){ BSTree p=T->right; T->right=p->left; p->left=T; T=p;}void R_Rotate(BSTree & T){ BSTree p=T->left; T->left=p->right; p->right=T; T=p;}void LeftBalance(BSTree & T){ BSTree lc=T->left; switch(lc->bf){ case LH: lc->bf=T->bh=EH; R_Rotate(T);break; case RH: rd=lc->right; switch(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; } rd->bf=EH; L_Rotate(T->left); R_Rotate(T); }}void RightBalance(BSTree & T){ BSTree rc=T->right; switch(rc->bf){ case RH: rc->bf=EH;T->bf=EH; L_Rotate(T);break; case LH: BSTree ld=rc->left; switch(ld->bf){ case LH: T->bf=EH;rc->bf=RH;break; case RH: T->bf=LH;rc->bf=EH;break; } ld->bf=EH; R_Rotate(T->right); L_Rotate(T); }}int InsertAVL(BSTree &T,int dat.int &taller){if(!T){T=new Node;T->data=dat;T->left=T->right=NULL;T->bf=EH;taller=1;return 1;}if(dat==T->data)return 0;if(dat<T->data){ if(!InsertAVl(T->left,dat,taller))return 0; if(taller){ switch(T->bf){ case EH:T->bf=LH;break; case LH:LeftBalance(T);break; case RH:T->bf=EH;break; } }}else{ if(!InsertAVl(T->right,dat,taller))return 0; if(taller){ switch(T->bf){ case EH:T->bf=RH;break; case RH:RightBalance(T);break; case LH:T->bf=EH;break; } }}}
阅读全文
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- SQL数据库面试题以及答案(50例题)
- POJ3020 Antenna Placement
- USB会议摄像机的重要的网络特性
- json_encode 与 json_decode的区别
- Spring与Mybatis集成
- 文章标题
- 2017-11-17-笔记2-mongoDB
- 用造小人让你彻底搞懂什么是建造者设计模式
- 架构师是大忽悠吗?阿里技术大牛告诉你真相!
- mysql分表和表分区详解
- Android Studio 必备技巧:TODO 用法及自定义 TODO
- React class clock
- Codeforces Round #374 (Div. 2) 721C Journey DAG上DP
- Effective Java