今天接触的是平衡二叉查找树,对于AVL树来说相比之前的数据结构稍微多了一些需要注意的地方,照例在此总结总结让自己巩固一二。
首先是使用AVL树的动机:
我们知道AVL树本质上是排序二叉树的一类特例,回顾一下,对于排序二叉树的定义考虑使用归纳定义:
①、空树是二叉查找树;
②、若p和q都是二叉查找树,而root是一个“关键字大于p上所有结点的关键字,并小于q上所有结点的关键字”的元素,则以root为根结点,p为左子树,q为右子树构成的二叉树是二叉查找树。
所以对于排序二叉树来说,有可能会出现这样一种情况:
此时的排序二叉树和单链表以及没有什么区别(极可能造成更大的内存浪费),而我们所期望的排序二叉树的形态应该是这样的:

这篇博客介绍了AVL树的基本概念和构建原理。AVL树是一种平衡二叉查找树,通过限制左右子树的高度差不超过1来保证高效的查找、插入和删除操作。文章提到了AVL树与排序二叉树的区别,强调了维持动态平衡的重要性,并提到使用旋转操作进行平衡调整。此外,作者还分享了在学习AVL树过程中对链表理解的加深以及编程风格的改变。






