AVL树模版
来源:互联网 发布:array 添加数据 编辑:程序博客网 时间:2024/06/05 06:10
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;struct AVL_tree_node{ char name[31]; int cnt,height; AVL_tree_node *pleft; AVL_tree_node *pright;};int n=0;int Height(AVL_tree_node *p){ if(p==NULL) return -1; return p->height;}AVL_tree_node* LLRotate(AVL_tree_node *Root){ AVL_tree_node *p=Root->pleft; Root->pleft=p->pright; p->pright=Root; Root->height=max(Height(Root->pleft),Height(Root->pright))+1; p->height=max(Height(p->pleft),Root->height)+1; return p;}AVL_tree_node* RRRotate(AVL_tree_node *Root){ AVL_tree_node *p=Root->pright; Root->pright=p->pleft; p->pleft=Root; Root->height=max(Height(Root->pleft),Height(Root->pright))+1; p->height=max(Height(p->pright),Root->height)+1; return p;}AVL_tree_node* LRRotate(AVL_tree_node *Root){ Root->pleft=RRRotate(Root->pleft); return LLRotate(Root);}AVL_tree_node* RLRotate(AVL_tree_node *Root){ Root->pright=LLRotate(Root->pright); return RRRotate(Root);}AVL_tree_node* Insert(char s[],AVL_tree_node *Root){ if(Root==NULL) { Root=new AVL_tree_node; strcpy(Root->name,s); Root->cnt=1; Root->height=0; Root->pleft=Root->pright=NULL; return Root; } int t=strcmp(s,Root->name); if(t==0) { Root->cnt++; } else if(t<0) { Root->pleft=Insert(s,Root->pleft); if(Height(Root->pleft)-Height(Root->pright)==2) { if(strcmp(s,Root->pleft->name)<0) Root=LLRotate(Root); else Root=LRRotate(Root); } } else { Root->pright=Insert(s,Root->pright); if(Height(Root->pright)-Height(Root->pleft)==2) { if(strcmp(s,Root->pright->name)>0) Root=RRRotate(Root); else Root=RLRotate(Root); } } Root->height=max(Height(Root->pleft),Height(Root->pright))+1; return Root;}void mid_cal(AVL_tree_node *Root){ if(Root!=NULL) { mid_cal(Root->pleft); printf("%s %.4lf\n",Root->name,Root->cnt*100.0/n); mid_cal(Root->pright); }}int main(){ AVL_tree_node *Root=NULL; char s[31]; while(gets(s)!=NULL) { Root=Insert(s,Root); n++; } mid_cal(Root);}
0 0
- AVL树模版
- 我实现的AVL树模版类
- AVL树
- AVL树
- AVL树
- avl树
- AVL树
- avl树
- AVL树
- AVL树
- AVL树
- AVL树
- avl树
- avl树
- AVL树
- AVL树
- AVL树
- AVL树
- 我的csdn博客正式开通
- 深入理解java虚拟机 第2章(一):Java内存区域
- HTTP协议学习总结
- socket编程的同步、异步与阻塞、非阻塞示例详解之二
- UVA 10859 Placing Lampposts(树上dp)
- AVL树模版
- devstack安装mitaka之解决创建cirros云主机的键盘输入错误
- python对查找数据后,对其下一行的操作
- socket编程中的超时设置示例详解之一
- 如何用phpstorm编辑远程项目
- C++虚函数-同名访问 以及两道例题
- 思维逻辑题
- Win10系统安装汇编环境
- socket编程中的超时设置示例详解之二