zoukankan      html  css  js  c++  java
  • AVL Trees & Huffman Tree

    AVL Trees

    Def.

    image-20210612201016317

    新结点的插入可能会破坏平衡:

    image-20210612201104374

    image-20210612201357577

    Rotation

    left-heavy & right-heavy

    将结点的平衡因子定义为:左子树高 - 右子树高

    left-heavy说明平衡因子为1,right-heavy说明平衡因子为-1

    下面讨论如何对 最小不平衡子树 进行调整 :

    (这里为了确保所讨论的最小平衡子树以 A为根,示例中 BL,BR和 AR均为高 H的子树)

    LL

    image-20210612202614042

    RR

    image-20210612203757637

    LR

    image-20210612204706887

    image-20210612204728201

    RL

    image-20210612205211934

    image-20210612205237845

    小结

    左边重就往右旋

    右边重则往左旋

    image-20210612205502120

    Steps

    1. 具体来说,首先自下向上找到最小的不平衡子树
    2. 然后针对这棵子树,分析不平衡原因是以上四种的哪一个;
    3. 如果为:
      • LL:将最小不平衡子树根的左孩子右旋
      • RR:将最小不平衡子树根的右孩子左旋
      • LR:将最小不平衡子树根的左孩子的右孩子先左旋再右旋
      • RL:将最小不平衡子树根的右孩子的左孩子先右旋再左旋

    for instance

    RR型的调整

    插入90,出现RR型不平衡,自下而上找到最小不平衡子树以66为根

    针对66的右孩子进行左旋操作

    调整结束

    image-20210612212553080

    image-20210612212747497

    RL型的调整

    插入63,出现RL型不平衡,自下向上找到最小不平衡子树以50为根

    则针对50的右孩子的左孩子:66进行左旋+右旋

    调整结束

    image-20210612212040956

    image-20210612212310792

    查找效率分析

    image-20210612213531763

    6.006的证明方法如下

    N_h表示构成一棵高度为h的AVL树的最少结点数:

    第一种方法根据递推式可以粗略得到h的上限,数量级为O(lgn)

    第二种根据斐波那契数列可以得到更精确的近似 max.h 约等于1.440lgn,

    总之,记住含有n个结点的AVL树的最大深度为O(lgn)即可,这也意味着平衡二叉树的平均查找长度为O(lgn)

    image-20210612214350389

    Huffman Tree

    WPL

    带权路径长度

    image-20210613145551050

    Def.

    image-20210613145753821

    Build a Huffman tree

    image-20210613150204554

    哈夫曼树并不唯一 :

    image-20210613150320542

    哈夫曼编码

    用一串二进制数表示信息

    image-20210613150828447

    Optimize_Attempt1

    固定长度 → 可变长

    image-20210613151052929

    降低了树的 WPL

    Optimize_Attempt2

    Q:能否进一步减少编码长度,将A直接用1表示?

    A:这会导致接收方解码时出现歧义

    image-20210613151620542

    (右图树画错了,应该有三层)

    小结

    image-20210613152245997

    image-20210613152424134

  • 相关阅读:
    一、dynamic
    一、提问方式
    金额大写
    1、过滤敏感字符
    一、简单的移动端tab头部二级下拉导航栏,向下弹出,向上隐藏
    一、简单的图片上传并预览功能input[file]
    【2019-11-16】做人和做企业是一个同心圆
    【2019-11-15】销售门槛低,但前途无量
    【2019-11-14】乐观扩宽了自己想象的范围
    【2019-11-13】看到别人的是孤独,其实是独处
  • 原文地址:https://www.cnblogs.com/potofsalt/p/14880359.html
Copyright © 2011-2022 走看看