平衡二叉排序树——AVLTree

一颗平衡二叉排序树,要么是空树,要么是具有如下性质的二叉排序树

  1. 左子树与右子树高度之差的绝对值小于等于1
  2. 左子树和右子树也是平衡二叉树

引入平衡二叉树的目的是提高查找效率,其平均查找长度为O(logn)

结点平衡因子(bf)定义为:结点左子树深度与右子树深度之差。(-1,0,1)

平衡二叉树的旋转方法有两种:LL型 与 RR型。

书上提到的 RL型 和 LR型 是可以通过LL型和RR型得到的。

可以参考 数据结构——用C语言描述 P286页 (讲的挺好的)

 

AVLTree的数据结构:

AVLTree类的定义:

以上是头文件。


 

接下来是具体的实现。

首先是 LL RR  LR  RL 的实现. A是根结点,FA是根结点的父节点(看书…)

 

插入函数:

 

删除函数:

 

其他实现函数:

 

 

接口的实现:

测试 main 函数:

先这样存着吧…难…敲了一天…

【Search】【Sort】平衡二叉排序树——AVLTree
Tagged on:             
0 0 投票数
Article Rating
订阅评论
提醒

0 评论
内联反馈
查看所有评论