码迷,mamicode.com
首页 > 其他好文 > 详细

平衡二叉搜索树

时间:2020-04-11 00:32:57      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:添加元素   平衡二叉搜索树   time   java   内核   binary   完全二叉树   理想   限制   

平衡二叉搜索树

二叉搜索树的问题:

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

平衡(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)

平衡二叉搜索树

标签:添加元素   平衡二叉搜索树   time   java   内核   binary   完全二叉树   理想   限制   

原文地址:https://www.cnblogs.com/Java0120/p/12676936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!