【数据结构第四周】树知识点整理(下)【平衡二叉树】

1、什么是平衡二叉树

 平衡因子(Balance Factor,简称BF):BF(T)=HL-HR,

HL和HR分别代表树T的左右子树的高度

平衡二叉树(Balanced Binary Tree)(AVL树)

空树,或者任一结点的左右子树的高度差的绝对值不超过1

假设nh是高度为h的平衡二叉树的最小结点数,则

2、平衡二叉树的调整

首先我们把平衡因子被破坏的结点称为“发现者”,而造成这种破坏的结点称为“麻烦结点”。

 发生不平衡需要调整的情况有下面四种:

(1)对某结点的右儿子的右子树进行了一次插入。 即麻烦结点在发现者的右子树的右边。(右右旋转)

  处理方法是把被破坏的结点的右子树上移一层,其他需要调整的结点按照AVL树的性质(左小右大)挂上去。

  举个例子:

 

 再举个例子:

(2)对某结点的左儿子的左子树进行了一次插入。即麻烦结点在发现者的左子树的左边。(左左旋转)

  处理方法是把被破坏者的左儿子上移一层变为父亲结点,被破坏者变成右儿子,其他需要调整的结点按照AVL树的性质(左小右大)挂上去。

(3)对某结点的左儿子的右子树进行了一次插入。即麻烦结点在发现者的左子树的右边。(左右旋转)

(4)对某结点的右儿子的左子树进行了一次插入。即麻烦结点在发现者的右子树的左边。(右左旋转)

posted @ 2015-01-26 15:10  Summer先生  阅读(656)  评论(0编辑  收藏  举报