自平衡二叉搜索树

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)右左旋转

 

posted @ 2018-01-08 23:40  hyserendipity  阅读(807)  评论(0编辑  收藏  举报