AVL平衡树的插入例程
/*
**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
AVL平衡树的插入例程相关推荐
- c++《AVL树的概念》《AVL树的插入》《AVL树的旋转》《AVL树的验证》《AVL树的删除》《AVL树的性能》
4.1 AVL树 4.1.1 AVL树的概念 二叉搜索树虽可以缩短查找的效率,**但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当 于在顺序表中搜索元素,效率低下.**因此,两位俄罗斯的 ...
- AVL树的插入_删除操作实现~
AVL的插入操作:找到所插位置之后,往上寻找可能发生不平衡之处x,若找到x则调整平衡.顶多调整平衡1次. AVL的删除操作:找到删除结点x,类似于二叉查找树一样找到其后继或前驱y,若为x->ri ...
- 二叉平衡树的插入和删除操作
[转载]二叉平衡树的插入和删除操作 1. 二叉平衡树 二叉排序树查找.插入和删除操作的时间复杂度和树的深度n有关.构建树时,当先后插入的结点按关键字有序时,二叉排序树退化为单枝树,平均查找长 ...
- AVL树的插入与删除(详解)
AVL树的插入与删除(详解) 平衡二叉树的定义就不在这里赘述了,平衡二叉树的插入与删除都是基于平衡二叉树的查找进行的.平衡二叉树的查找和二叉树的查找又是一样的. 插入的话,我们从平衡二叉树的根结点出发 ...
- AVL平衡树c语言实现与测试-建立自己的c数据结构与算法库系列(最新修改)(13)
重新修改让我非常郁闷,本来已经详细分析,图文并茅,自认为分析得非常晰. 写完保存,居然没有成功,一大堆工作白费了.CSDN这个博客真是让我失望啊,Best4c中画图非常辛苦,可是画完了也白费了. 唉呀 ...
- AVL树的 插入 和 删除
AVL树的 插入 和 删除 文章目录 AVL树的 插入 和 删除 AVL的定义 AVL树节点的创建 AVL的插入 调整 插入的左旋 插入右旋 左右旋 右左旋 AVL的删除 前面写的 二叉搜索树(BST ...
- AVL树的插入(C++实现)
1. 概念 AVL树(Adelson-Velsky and Landis Tree)于1962年被提出,是计算机科学中最早被发明的平衡二叉查找树.AVL树得名于它的发明者G. M. Adelson-V ...
- 数据结构-----AVL树的插入删除操作
对于AVL的插入和删除,主要利用的就是上篇文章所述的四种旋转操作,根据插入后不同的结构选用不同的方式复原平衡. 再次声明一下,http://www.cnblogs.com/QG-whz/p/51672 ...
- 【AVL树】AVL树的插入操作以及旋转
在讲解AVL树之前必须了解二叉搜索树, 可以看我之前的博客:二叉搜索树 AVL树是在二叉搜索树的基础上,在向二叉树排序树中插入新的结点,如果保证每个结点的左右子树的高度差的绝对值不超过1,即需要在插入 ...
最新文章
- linux运维常用命令一句话(持续更新中)
- 2.1 0/1分类问题-机器学习笔记-斯坦福吴恩达教授
- pycharm提示your evalluation license has expired解决方法
- hdu 3790 最短路径问题
- Django update用法
- python3 copy_Python3 深浅拷贝
- 软件开发设计文档模版
- 利用Python的openpyxl对Excel实现空白单元格的填充
- 箱线图Boxplot-统计学解读
- Windows右键菜单管理 图片右键菜单太长
- logo设计及VIS手册排版
- 雪球产品,场外雪球结构介绍
- The 3rd SMUCTF Office WriteUp
- 标准差和均方根误差的区别
- 南宁市计算机技术专业学校,南宁电脑技术学校有哪些
- 日常报错:关于tomcat默认端口被占用的问题
- CVE-2021-40539-Zoho ManageEngine ADSelfService Plus如何从bypass到RCE
- Theano的安装及GPU的配置
- Java GC(垃圾回收)机制知识总结
- 复习JavaScript时的笔记