美文网首页
最佳和平衡二叉排序树

最佳和平衡二叉排序树

作者: 菜菜的程序猿 | 来源:发表于2020-09-16 20:28 被阅读0次

最佳二叉排序树

具有最小平均比较次数

平衡二叉排序树

平衡二叉树(AVL树):二叉树中每个节点的左右子树高度都差不多;平衡二叉树或者是空树,或者其左右子树都是平衡二叉树,且左右子树的深度差的绝对值不超过1;
平衡因子BF:右子树与左子树的高度差,取值只有-1,0,1;

调整平衡的模式

若失去平衡,首先调整最小不平衡子树,即离插入节点最近,且根节点的平衡因子大于1的子树;若调整后最小不平衡子树恢复平衡,且恢复到插入前的高度,那么整棵树也就恢复平衡;

最小不平衡子树的根为A,调整动作分为4种:

  1. LL型调整 2.RR型调整
    3.LR型调整 4.RL型调整

LL型调整:(\alpha B \beta)A(\gamma) = (\alpha)B(\beta A \gamma)

在A的左子节点(L)的左子树(L)中插入新节点,使A的平衡因子由-1变成-2,打破了平衡;
调整规则:将A的左子节点B提升为新的二叉树的根,原来的根A连同其右子树Y向右下方旋转成B的右子树;B的右子树\beta调整为A的左子树;

RR型调整:(\alpha)A(\beta B \gamma) = (\alpha A \beta)B(\gamma)

在A的右子节点(R)的右子树(R)中插入新节点,使A的平衡因子由1变成2,打破平衡;
调整规则:将A的右子节点B提升为新二叉树的根,原来的根A连同其左子树\alpha向左下旋转成B的左子树;B的原左子树\beta作为A的右子树;

LR型调整 :((\alpha)B(\beta C \gamma))A(\delta) = (\alpha B \beta)C(\gamma A \delta)

在A的左子节点(L)的右子树(R)中插入新节点,使A的平衡因子由-1变成-2,打破平衡;

调整规则:设C是A的左子节点的右子节点;

  • 将A的孙子节点C提升为新的二叉树的根;
  • 将C的父节点连同其左子树向左下旋转成为新根C的左子树;
  • 将C的左子树\beta称为B的右子树
  • 原来根A连同其左子树\delta向右下旋转成为C的右子树;
  • 将C的右子树\beta变为A的左子树

RL型调整:(\alpha)A((\beta C \gamma)B(\delta)) = (\alpha A \beta)C(\gamma B \delta)

在A的右子树(R)的左子树(L)中插入新节点,使A的平衡因子由1变成2,打破平衡;
调整规则:设C是A的右子树的左子树

  • 将A的右子节点C提升为新二叉树的根
  • 原来C的父节点B连同其右子树\delta向右下旋转称为新根C的右子树;
  • 原来C的右子树\gamma变成B的左子树
  • 原根A连同其左子树\alpha向左下旋转成为C的左子树;
  • C的左子树\beta成为A的右子树

相关文章

  • 最佳和平衡二叉排序树

    最佳二叉排序树 具有最小平均比较次数 平衡二叉排序树 平衡二叉树(AVL树):二叉树中每个节点的左右子树高度都差不...

  • Binary Search Tree

    如果二叉排序树是平衡的,则n个节点的二叉排序树的高度为 ,其查找效率为 ,近似于折半查找。如果二叉排序树完全不平衡...

  • 看图说话之平衡二叉排序树

    本文在看图说话之二叉排序树的基础上介绍了平衡二叉排序树,结构性较好的二叉排序树其插入和删除操作的时间复杂度接近Lo...

  • 平衡树(AVL)的插入

    平衡树,遵循了二叉排序树的原则,小的往左插,也可以认为是最优二叉排序树,因为它在插入的过程中通过每个节点的平衡因子...

  • Java集合源码分析之基础(五):平衡二叉树(AVL Tree)

    二叉排序树很好的平衡了插入与查找的效率,但不平衡的二叉排序树效率大打折扣。今天介绍的AVL树就是一种解决此问题的方...

  • C++AVL树

    前言 AVL树又叫平衡二叉排序树,是一棵空树或它的任何节点的两个子树的高度最大差别为1的二叉排序树AVL平衡二叉排...

  • 从零开始养成算法·篇二十:平衡二叉树与散列查找

    一、平衡二叉树 背景:平衡二叉树首先是二叉排序树。基于二叉排序树,外国的两个大爷发现树越矮查找效率越高,进而发明了...

  • 平衡二叉树

    一、概念 平衡二叉树是一种 二叉排序树 ,其中每个结点的左子树和右子树的高度差至多等于1 平衡因子:平衡二叉树是在...

  • iOS标准库中常用数据结构和算法之二叉排序树

    上一篇:iOS标准库中常用数据结构和算法之排序 ?二叉排序树 功能:二叉排序树的标准实现是一颗平衡二叉树。二叉排序...

  • 二叉排序树:左节点 < 根节点 < 右节点(节点不相等),左右子树亦是二叉排序树。 红黑树:自平衡二叉查找树。避免...

网友评论

      本文标题:最佳和平衡二叉排序树

      本文链接:https://www.haomeiwen.com/subject/zbthyktx.html