zoukankan      html  css  js  c++  java
  • ------更快的搜索储存结构-----平衡二叉树-----------------

    上一节咱们已经说过了,树的深度越深,时间复杂度也就越高。所以我们要想办法让树的深度尽量的小。 

    所以就产生了平衡二叉树这种东西。

    平衡二叉树(AVL):是一种特殊的排序二叉树,其左右子树都是平衡二叉树,且左右子树的高度之差的绝对值不超过1,一句话表述就是:以树中所有节点的根为树的左右子树的高度只差的绝对值不超过一。

     原来的时候我们有一颗很平衡的二叉树,但是现在我们进行插入元素操作就会破坏原先的二叉树使其的左右子树的深度绝对值差不是小于等于一了。

    所以---我们今天就是解决这个问题的,现在开始正课

    ---------------------平衡二叉树的调整--------------------

    在我们平衡二叉树的时候要注意的一件很重要的事情是,不论我们怎样操作,都需要保证在操作之后,二叉树还是搜索二叉树。否则就没用了。

     

     不平衡的“被破坏者”是mar,“破坏者”是nov,nov在被破坏者右子树的右边,所以该插入称为RR插入,需要RR旋转

     (右单旋)

     我们首先进行正常的插入操作然后找出破坏者和被破坏者。

    然后开始发现关系破坏者在被破坏者右子树的右子树上所以称为RR旋转。

     这个的话也是RR旋转

     下面附上LL旋转  

     

     附上 最操蛋的LR旋转。

     

    然后是RL旋转

    上面说了四种旋转方式分别是RR,LL,RL,LR。所有的旋转都可以分成这四类,在我们进行平衡二叉树这个操作的时候,我们就需要看被破坏者和破坏者之间的关系,根据他们的关系去调整 被破坏者到破坏者的沿途三个节点。即可。。。。。。

  • 相关阅读:
    We7 2.7版:全拖拽建站 开源CMS
    We7 CMS 2.6RC2版本发布 开源CMS
    LINQ简易教程
    C# 引用 C# DLL
    ASP.NET中母版页与JavaScript控制的一点小问题
    LINQ连接远端数据库问题
    ASP.NET中自动生成XML文件并通过XSLT显示在网页中的方法
    【转载】常见逻辑错误
    因为压力大变得很郁闷的时候怎么办
    代码覆盖度C#代码监控工具NCover、Rational PureCoverage、BullseyeCoverage
  • 原文地址:https://www.cnblogs.com/A-FM/p/5144708.html
Copyright © 2011-2022 走看看