/*
**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平衡树的插入例程相关推荐

  1. c++《AVL树的概念》《AVL树的插入》《AVL树的旋转》《AVL树的验证》《AVL树的删除》《AVL树的性能》

    4.1 AVL树 4.1.1 AVL树的概念 二叉搜索树虽可以缩短查找的效率,**但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当 于在顺序表中搜索元素,效率低下.**因此,两位俄罗斯的 ...

  2. AVL树的插入_删除操作实现~

    AVL的插入操作:找到所插位置之后,往上寻找可能发生不平衡之处x,若找到x则调整平衡.顶多调整平衡1次. AVL的删除操作:找到删除结点x,类似于二叉查找树一样找到其后继或前驱y,若为x->ri ...

  3. 二叉平衡树的插入和删除操作

    [转载]二叉平衡树的插入和删除操作 1.      二叉平衡树 二叉排序树查找.插入和删除操作的时间复杂度和树的深度n有关.构建树时,当先后插入的结点按关键字有序时,二叉排序树退化为单枝树,平均查找长 ...

  4. AVL树的插入与删除(详解)

    AVL树的插入与删除(详解) 平衡二叉树的定义就不在这里赘述了,平衡二叉树的插入与删除都是基于平衡二叉树的查找进行的.平衡二叉树的查找和二叉树的查找又是一样的. 插入的话,我们从平衡二叉树的根结点出发 ...

  5. AVL平衡树c语言实现与测试-建立自己的c数据结构与算法库系列(最新修改)(13)

    重新修改让我非常郁闷,本来已经详细分析,图文并茅,自认为分析得非常晰. 写完保存,居然没有成功,一大堆工作白费了.CSDN这个博客真是让我失望啊,Best4c中画图非常辛苦,可是画完了也白费了. 唉呀 ...

  6. AVL树的 插入 和 删除

    AVL树的 插入 和 删除 文章目录 AVL树的 插入 和 删除 AVL的定义 AVL树节点的创建 AVL的插入 调整 插入的左旋 插入右旋 左右旋 右左旋 AVL的删除 前面写的 二叉搜索树(BST ...

  7. AVL树的插入(C++实现)

    1. 概念 AVL树(Adelson-Velsky and Landis Tree)于1962年被提出,是计算机科学中最早被发明的平衡二叉查找树.AVL树得名于它的发明者G. M. Adelson-V ...

  8. 数据结构-----AVL树的插入删除操作

    对于AVL的插入和删除,主要利用的就是上篇文章所述的四种旋转操作,根据插入后不同的结构选用不同的方式复原平衡. 再次声明一下,http://www.cnblogs.com/QG-whz/p/51672 ...

  9. 【AVL树】AVL树的插入操作以及旋转

    在讲解AVL树之前必须了解二叉搜索树, 可以看我之前的博客:二叉搜索树 AVL树是在二叉搜索树的基础上,在向二叉树排序树中插入新的结点,如果保证每个结点的左右子树的高度差的绝对值不超过1,即需要在插入 ...

最新文章

  1. linux运维常用命令一句话(持续更新中)
  2. 2.1 0/1分类问题-机器学习笔记-斯坦福吴恩达教授
  3. pycharm提示your evalluation license has expired解决方法
  4. hdu 3790 最短路径问题
  5. Django update用法
  6. python3 copy_Python3 深浅拷贝
  7. 软件开发设计文档模版
  8. 利用Python的openpyxl对Excel实现空白单元格的填充
  9. 箱线图Boxplot-统计学解读
  10. Windows右键菜单管理 图片右键菜单太长
  11. logo设计及VIS手册排版
  12. 雪球产品,场外雪球结构介绍
  13. The 3rd SMUCTF Office WriteUp
  14. 标准差和均方根误差的区别
  15. 南宁市计算机技术专业学校,南宁电脑技术学校有哪些
  16. 日常报错:关于tomcat默认端口被占用的问题
  17. CVE-2021-40539-Zoho ManageEngine ADSelfService Plus如何从bypass到RCE
  18. Theano的安装及GPU的配置
  19. Java GC(垃圾回收)机制知识总结
  20. 复习JavaScript时的笔记

热门文章

  1. 炒股的最终下场(搞笑趣图)
  2. 苹果通过电商渠道降价20天后,iPhone在中国销量猛增八成
  3. 三年研发、数亿美元成本,Mate 20的“大杀器”麒麟980是怎样炼成的?
  4. 比人高效10倍,3分钟就能评估帕金森!这是腾讯新推出的AI医生
  5. 旷视科技Face++进军机器人业务
  6. 一文看尽科大讯飞年度发布会:医疗,是这家A股AI公司的新赛道
  7. 作用域闭包,你真的懂了吗?
  8. 代码重构(四):条件表达式重构规则
  9. Jenkins动态部署方案
  10. github上完成个人的站点搭建