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