zoukankan      html  css  js  c++  java
  • 平衡二叉搜索树

    平衡二叉搜索树

    二叉搜索树的问题:

    • 添加:若从小到大添加元素,那么二叉搜索树将退化成链表
    • 删除:删除节点时也可能会导致二叉搜索树退化成链表

    平衡(Banlance)

    平衡:当节点数量固定时,左右子树的高度越接近,这棵二叉树就越平衡(高度越低)
    最理想的状态就是像完全二叉树、满二叉树那样,高度是最小的。

    解决方案

    前提:节点的添加、删除顺序是无法限制的,可以认为是随机的。
    改进方案:在节点的添加、删除操作之后,想办法让二叉搜索树恢复平衡(减小树的高度),同时添加、删除节点之后的调整次数一定要少,即用尽量少的调整次数达到适度平衡。

    • 一颗达到适度平衡的二叉搜索树,可以称之为:平衡二叉搜索树

    两大猪脚--AVL树和红黑树

    • AVL树:Windows NT 内核中广泛使用
    • 红黑树:
      1. C++ STL(比如 map、set )
      2. Java 的 TreeMap、TreeSet、HashMap、HashSet
      3. Linux 的进程调度
      4. Ngix 的 timer 管理

    一般也称它们为:自平衡的二叉搜索树(Self-balancing Binary Search Tree)

  • 相关阅读:
    对Java课程的感想
    OO第二阶段总结
    OO第一作业周期(前四周)总结
    实验7 流类库和输入输出
    实验6 类的继承和多态
    实验5 类和对象3
    实验4 类与对象2
    实验3 类和对象
    实验2
    实验1
  • 原文地址:https://www.cnblogs.com/Java0120/p/12676936.html
Copyright © 2011-2022 走看看