zoukankan      html  css  js  c++  java
  • 【数据结构第四周】树知识点整理(下)【平衡二叉树】

    1、什么是平衡二叉树

     平衡因子(Balance Factor,简称BF):BF(T)=HL-HR,

    HL和HR分别代表树T的左右子树的高度

    平衡二叉树(Balanced Binary Tree)(AVL树)

    空树,或者任一结点的左右子树的高度差的绝对值不超过1

    假设nh是高度为h的平衡二叉树的最小结点数,则

    2、平衡二叉树的调整

    首先我们把平衡因子被破坏的结点称为“发现者”,而造成这种破坏的结点称为“麻烦结点”。

     发生不平衡需要调整的情况有下面四种:

    (1)对某结点的右儿子的右子树进行了一次插入。 即麻烦结点在发现者的右子树的右边。(右右旋转)

      处理方法是把被破坏的结点的右子树上移一层,其他需要调整的结点按照AVL树的性质(左小右大)挂上去。

      举个例子:

     

     再举个例子:

    (2)对某结点的左儿子的左子树进行了一次插入。即麻烦结点在发现者的左子树的左边。(左左旋转)

      处理方法是把被破坏者的左儿子上移一层变为父亲结点,被破坏者变成右儿子,其他需要调整的结点按照AVL树的性质(左小右大)挂上去。

    (3)对某结点的左儿子的右子树进行了一次插入。即麻烦结点在发现者的左子树的右边。(左右旋转)

    (4)对某结点的右儿子的左子树进行了一次插入。即麻烦结点在发现者的右子树的左边。(右左旋转)

  • 相关阅读:
    LeetCode 217. 存在重复元素
    LeetCode 48. 旋转图像
    LeetCode 35. 搜索插入位置
    LeetCode 27. 移除元素
    LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)
    LeetCode 328. 奇偶链表
    LeetCode 160. 相交链表 (找出两个链表的公共结点)
    LeetCode 26. 删除排序数组中的重复项
    LeetCode 836. 矩形重叠
    数据库
  • 原文地址:https://www.cnblogs.com/acmsummer/p/4222961.html
Copyright © 2011-2022 走看看