自平衡二叉搜索树
2018-01-05 23:54:29
二叉搜索树的查找时间是和树高成正比的,在最坏条件下,查找的时间复杂度为O(n),因此要尽可能的使树的两边保持平衡,由此出现了自平衡的二叉树。
一、AVL树
在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是O(logn)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis,他们在1962年的论文《An algorithm for the organization of information》中发表了它。
节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1、0或 -1的节点被认为是平衡的。带有平衡因子 -2或2的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以直接存储在每个节点中,或从可能存储在节点中的子树高度计算出来。
- 平衡二叉树的高度能达到O(logn)吗?
- 平衡二叉树的调整
1)右单旋
2)左单旋
3)左右旋转
4)右左旋转