数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)

什么是平衡二叉树?
搜索树结点不同插入次序,将导致不同的深度和平均查找长度ASL。
平衡因子(Balance Factor,简称BF): BF(T) = hL-hR,其中hL和hR分别为T的左、右子树的高度。
平衡二叉树(Balanced Binary Tree)(AVL树)空树,或者任一结点左、右子树高度差的绝对值不超过1,即|BF(T) |≤ 1。
数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第1张图片
设 nh 高度为h的平衡二叉树的最少结点数。结点数最少时:
数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第2张图片

给定结点数为n的AVL树的最大高度为O(log2n)

平衡二叉树的调整
1.RR 旋转(右单旋)数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第3张图片
不平衡的“发现者”是Mar,“麻烦结点”Nov 在发现者右子树的右边,因而叫 RR 插入,需要RR 旋转(右单旋)
数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第4张图片
2.LL 旋转(左单旋)
数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第5张图片
“发现者”是Mar,“麻烦结点”Apr 在发现者左子树的左边,因而叫 LL 插入,需要LL 旋转(左单旋)
数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第6张图片
3.LR 旋转(左-右双旋)
数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第7张图片
“发现者”是May,“麻烦结点”Jan在左子树的右边,因而叫 LR 插入,需要LR 旋转
数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第8张图片
4.RL 旋转(右-左双旋)

一般情况调整如下:
数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第9张图片
注意:有时候插入元素即便不需要调整结构,也可能需要重新计算一些平衡因子。

问:在下列平衡树中插入3后,该树是否还平衡?如果不平衡应该做什么旋转进行调整?(C)
数据结构笔记9 平衡二叉树(平衡二叉树的概念、平衡二叉树的调整)_第10张图片
A.还是平衡的
B.不平衡了,应该做LL旋转
C.不平衡了,应该做RR旋转
D.不平衡了,应该做LR旋转

(以上笔记总结自浙江大学数据结构课程)

你可能感兴趣的:(数据结构)