滴水逆向联盟

标题: VC++2012编程演练数据结构《9》平衡二叉搜索树 [打印本页]

作者: 大灰狼    时间: 2014-9-15 08:29
标题: VC++2012编程演练数据结构《9》平衡二叉搜索树
平衡二叉搜索树

  任何结点的左子树和右子树高度最多相差1的二叉搜索树。
  (1)AVL树的插入算法
  a. 插入结点之后仍然是AVL树,则不调整;
  b. 插入结点之后不再满足AVL树条件,则进行调整,根据导致不平衡的原因,分为:
  a) LL型――单旋转调整
  b) LR型――双旋转调整
  c) RL型――双旋转调整
  d) RR型――单旋转调整
  下图是顺序插入单词{cup,cop,copy,hit,hi,his,hia}后得到的AVL树,单词之间按照字典顺序比较:
  (2)AVL树的删除算法
  a. 删除过程如BST结点的删除算法

  b. 删除后调整――从被删除的结点找到祖父结点,然后开始单旋转或多旋转操作,一次旋转结束并不 意味着树已经平衡,因为这可能会导致它的祖先结点发生新的不平衡。所以这样的调整操作要一直进行下去,直到树平衡为止。

类的实现如下


[cpp] view plaincopy







调用如下


[cpp] view plaincopy







效果如下







欢迎光临 滴水逆向联盟 (http://www.dtdebug.com/) Powered by Discuz! X3.2