[数据结构] 搜索树与AVL树
文章目录 1. 搜索树 1.1. 理解二叉搜索树 1.2. 搜索树性能分析 2. AVL树 2.1. 理解AVL树 2.2. AVL树节点的数据结构 2.3. AVL树的插入 2.4. AVL树的旋转* 2.5. AVL树的删除 2.6. AVL树性能分析 1. 搜索树 1.1. 理解二叉搜索树 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 如图所示 当进行数据搜索时 进行数据插入时过程与数据搜索相同, 找到一个适合自己的空节点 数据删除 1.2. 搜索树性能分析 插入和删除操作都必须先查找,查找效率代表了二叉搜索树中各个操作的性能. 理想情况下, 插入的树是完全二叉树 最坏情况下, 插入的树成了单链树 最优情况下,二叉搜索树为完全二叉树,其平均比较次数为:logn 最差情况下,二叉搜索树退化为单支树,其平均比较次数为:n / 2 2. AVL树 2.1. 理解AVL树 二叉搜索树虽可以缩短查找的效率, 但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下 . 因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M