平衡二叉树之AVL树(Adelson-Velsky and Landis Tree)简介及Java实现
[toc]
一、AVL树简介
在前面的内容中,我们已经介绍了平衡二叉树。其中提到了AVL树,这是一种非常著名的平衡二叉树。
在计算机科学中,AVL树(以发明者Adelson-Velsky和Landis命名)是一种自平衡二叉查找树。这是第一个发明类似自平衡机制的二叉树数据结构。在AVL树中,任何节点的两个子树的高度最多相差一个。如果在任何时候它们相差多于一个,则重新平衡以恢复此属性。查找,插入和删除在平均和最差情况下都需要$O(\log n)$时间,其中n是操作之前树中的节点数。插入和删除可能需要通过一个或多个树旋转来重新平衡树。
AVL树以其两位苏联发明家Georgy Adelson-Velsky和Evgenii Landis命名,他们在1962年的论文“An algorithm for the organization of information”中发表了这篇论文。
AVL树通常与红黑树进行比较,因为它们都支持相同的操作,并且对基本操作都是$O(\log n)$时间。对于查找密集型应用程序,AVL树比红黑树快,因为它们更严格地平衡。与红黑树相似,AVL树是高度平衡树。




