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)

  • 相关阅读:
    vue vmodel input type=checkbox的问题
    springboot配置文件优先级
    原生js实现复制功能
    Long.valueOf和Long.parseLong的区别
    程序员学习参考
    国外开源项目
    .NET快速入门教程
    Microsoft Update Catalog 离线安装包下载
    php header示例代码
    CentOS下iptables设置
  • 原文地址:https://www.cnblogs.com/Java0120/p/12676936.html
Copyright © 2011-2022 走看看