平衡二叉数又叫AVL树;如果有一组元素序列如:
(23,45,38,80,49,64,90)
我们要如何画出它的AVL呢 ?要先了解一下二叉排序树(查找二叉树)。建树时要遵循二叉排序树。
二叉排序树的特点是:左孩纸树小于跟,右孩子树大于根。具体操作如下:
但是在建树过程时,也要检查:每个结点的平衡度要满足在 :1,0,-1 之间。
所谓每个结点平衡度是指:其左子树高度 - 其右子树高度,无则为零。
如:结点“45”为 1,“23”为 -2,“38”为 0.
很明显画下AVL树是“营养不良”的。十分的不平衡,为了能迷途知返那该怎么办呢?
进行**平衡化旋转 **:
对失去平衡AVL树,根据不同的环境,可以进行的操作有四种:
左单旋(LL),右单旋(RR)
先左后右双旋转,先右后左双旋转。
进行RR旋转(顺时针旋转),发现怎么旋转都没毛用(不遵循二叉排序树)!!!!
自己无脑写的元素序列跪着也要写完啊!!
先把结点都插完:
80,49,64,90;从根结点开始比较个个结点,看看是在左边还是在右边。最后完成了的AVL树是:
结点 “45”平衡度是 -2,“23”是 -4,以 “45”对其进行左单旋(LL)如下图:
做的很粗糙,不管了!!
因为自己瞎几把出的元素序列所以无法边建AVL树边矫正平衡了。
如有不足请大发慈悲的指出吧,给我个美丽的忠告,让我留下感动的泪水!!
其他三种旋转方法就不搞了!!