博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AVL平衡树的插入例程
阅读量:7123 次
发布时间:2019-06-28

本文共 1018 字,大约阅读时间需要 3 分钟。

/***AVL平衡树插入例程**2014-5-30 11:44:50*/avlTree insert(elementType X, avlTree T){	if(T == NULL){		T = malloc(sizeof(struct avlTree));		if(T == NULL) fatalError("Out of space!!!");		T->element = X; T->height = 0;		T->left = T->right = NULL;	}else if(X < T->element){		T->left = insert(X, T->left);		if(height(T->left) - height(T->right) == 2){			if(X < T->left->element) 				T = singleRotateWithLeft(T);			else T = doubleRotateWithLeft(T);		}	}else if(X > T->element){		T->right = insert(X, T->right);		if(height(T->right) - height(T->left) == 2){			if(X > T->right->element)				T = singleRotateWithRight(T);			else T = doubleRotateWithRight(T);		}	}	/*--假设X已经存在,那么啥都不用做--*/		T->height = max(height(T->left), height(T->right)) + 1;	return T;}static position singleRotateWithLeft(position k2){	position k1 = k2-> left;		k2->left = k1->right;	k1->right = k2;		k2->height = max(height(k2->left), height(k2->right)) + 1;	k1->height = max(height(k1->left), k2->height) + 1;	return k1;}/*双右左旋就是先对T的右子树左单旋再对T本身右单旋*/static position

转载地址:http://srxel.baihongyu.com/

你可能感兴趣的文章
Pgpool-II 最新小版本更新发布,PgSQL 负载均衡中间件
查看>>
数据传输加密方式总结
查看>>
U-Boot启动过程完全分析
查看>>
深入理解Java中的底层阻塞原理及实现
查看>>
shell编程之转义和引用
查看>>
云盾.态势感知情报生态合作发布
查看>>
PHP排序函数
查看>>
ora.proxy_advm
查看>>
GitHub在其网站实现中移除对jQuery的使用
查看>>
美国明尼苏达州大学研制出仿生眼原型
查看>>
这些年,我是如何当好一个技术支持的
查看>>
多个网站域名进行301跳转合并对SEO有什么影响
查看>>
Linux学习笔记1_用户和权限
查看>>
安装mysql 配置环境变量
查看>>
一学就会的django项目服务器部署nginx-uwsgi-django/build
查看>>
ICPR 2018|阿里巴巴读光OCR及MTWI数据集亮相引关注
查看>>
对象存储oss中bucket中存在的文件夹怎么移动或者复制到另一个账号中的对象存储oss中???...
查看>>
RocksDB Write Prepared Policy
查看>>
那些我希望在一开始使用 Zsh(oh-my-zsh) 时就知道的
查看>>
为节省内存,Firefox 将用新方式阻止加载没用到的标签页
查看>>