【数据结构第四周】树知识点整理(下)【平衡二叉树】
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)对某结点的右儿子的左子树进行了一次插入。即麻烦结点在发现者的右子树的左边。(右左旋转)