二叉查找树&哈夫曼树

查找树的删除

  1. 叶子节点
    • 直接删除,父节点对应置为空
  2. 有一个子节点
    • 将子节点替代当前节点
  3. 有两个子节点
    • 用左节点(用前驱节点)
      • 左节点的右节点链接被删除的右子树,左节点的右子树的根当成新节点插入
      • 左节点作为替代节点,右节点的根直接做插入
    • 用右节点(用后驱节点)
      • 右节点的左节点链接被删除的左子树,右节点的右子树的根当成新节点插入
      • 右节点作为替代节点,左节点的根直接做插入

哈夫曼树

  1. 最优二叉树
    • 带权路径最小
  2. 一堆数据要构成哈夫曼树,所有的数据应当是叶子节点
  3. WPL(带权路径长度)= 节点全值*路径长度 之和
    二叉查找树&哈夫曼树
  4. 权值越大的点应该越靠近根,权值越小的点应该越靠近底
  5. 如何构建哈夫曼树
    • 带权路径最小
    • 同层当中小权值节点应当放在左边
    • 优先级队列/堆(小数在前)
      • 每次取队头两个节点组成一个和值节点从队尾放入
      • 和值过后,如果队空,和值就是这棵树的根

6.哈夫曼树的插入和删除