chapter 5-5 树与二叉树的应用

本文介绍了二叉排序树的查找、插入和删除操作,重点剖析了AVL树的平衡调整策略,包括平衡因子计算与LL、LR、RR、RL四种情况的处理。同时讨论了AVL树和哈夫曼树的查找效率及构造方法,涉及哈夫曼编码的检验。
摘要由CSDN通过智能技术生成

二叉排序树

  1. 查找二叉排序树
    比当前结点小则走向该节点的左孩子,比当前结点大则走向右孩子。不断向下走直至找到目标结点或者走到空即为未命中。
  2. 二叉排序树的插入
    包含排序树的查找过程。
    先将待插入数字作为查找目标开始查找;若在树内命中说明已经存在无需再插入;若未命中,则最后查找到达的空树处即为应该插入的位置。
  3. 二叉排序树的删除
    一个递归的过程。
    若待删除结点为叶节点,直接删除。
    若待删除结点有左右孩子,将其值改为其直接后继的值。则待删除结点变为其直接后继结点。(若无右孩子则改为直接前驱,若左右孩子都有或只有右孩子都改为直接后继)
    不断递归直至其直接后继为叶节点,回到第一步即直接删除。
  4. 二叉排序树查找效率
    注意计算查找成功平均次数和查找失败平均次数。(书P190 T1)
    二叉排序树的插入删除时间复杂度为O(logn).

AVL树

  1. 平衡因子
    左树高度-右树高度
  2. 调整AVL树
    tip:
    - 每次调整的对象都是最小的不平衡子树
    - 对于双旋转:先对不平衡子树的左or右孩子进行操作,再对根节点操作
    - 对于单旋转:直接对子树根节点操作
    - 若是子树的右孩子造成不平衡,则左旋;反之右旋
    根据以上四点处理LL,LR,RR,RL即可。
    LL:失衡结点的左子树的左孩子的原因。则右旋
    RR:失衡结点的右子树的右孩子的原因。则左旋
    LR:失衡结点的左子树的右孩子的原因。则左旋+右旋
    RL:失衡结点的右子树的左孩子的原因。则右旋+左旋
  3. AVL树的查找效率
    有n个结点的AVL树的最大深度为O(log2N),因此平均查找长度为O(log2N)。
  4. 平衡二叉树结点的递推公式:N0=1,N1=2,Nh=Nh-1+Nh-2+1
    由此构造出的二叉树也是由最少结点构造出的保持该高度的AVL树

哈夫曼树与编码

  1. 名词释义

    • 权:结点带的数值
    • 带权路径长度(WPL):从树根到某叶节点的路径长度(边数)与该叶节点的权的乘积称为该结点的带权路径长度;而树的带权路径长度就是所有叶节点的WPL的和
    • 哈夫曼树:WPL最小的树
  2. 哈夫曼树构造法
    书P180
    注意哈夫曼树的构造不唯一,但是其WPL都相同且为最优

  3. 哈夫曼编码中,有效前缀的检验方法:构造哈夫曼树,并在构造的过程中对前缀的有效性进行检验。P196

  4. 对于哈夫曼树,若其度为m(注意树的度与节点的度的区别)。则说明该树中的结点只有度为m和0两种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值