AVL树(平衡树)
1.本质:一棵二叉查找树
2.定义:带有平衡条件的查找树,是一种特殊的二叉查找树,又称平衡二叉树
3特点:是一颗空树或其左右子树高度差不大于1,并且两个子树都是一颗平衡二叉树
4.AVL树的基本操作:插入和删除。
在删除的时候可能会破坏树的平衡性,因此删除造成的操作,是不需要考虑的。AVL树的插入分为两大类—单旋转和双旋转,其中1)单旋转:分左旋转和右旋转;2)双旋转:分先局部右旋转再整体左旋转、先局部左旋转再整体右旋(即先左后右、先右后左)。也就是先局部再整体。
5.在实现上从以下三步入手:
1)判断插入操作是否破坏平衡,(判断要求:其左右子树高度差不大于1)
2)选择操作是单旋转还是双旋转
①对该结点的左儿子的左子树进行一次插入。(右)
②对该结点的左儿子的右子树进行一次插入。(先左后右)
③对该结点的右儿子的左子树进行一次插入。(先右后左)
④对该结点的右儿子的右子树进行一次插入。(左)
其中①、④选择单旋转②、③选择双旋转
3)旋转
以下是图解析
我们按顺序将一 组数据1,2,3,4,5,6分别插入到一颗空二叉查找树和AVL树中,插入的结果如下图:
python--树--AVL树
最新推荐文章于 2023-01-15 22:15:45 发布
AVL树是一种平衡二叉查找树,确保左右子树高度差不大于1。插入可能导致不平衡,通过单旋(左旋、右旋)和双旋(先左后右、先右后左)来调整。插入过程中,先判断是否破坏平衡,然后选择旋转类型。插入实例展示了不同旋转情况。
摘要由CSDN通过智能技术生成