首页 > 其他分享 >第7章. 平衡二叉搜索树

第7章. 平衡二叉搜索树

时间:2023-12-06 20:46:13浏览次数:32  
标签:Tree 二叉 搜索 二叉树 平衡 节点

平衡二叉搜索树(Balanced Binary Search Tree)


1.1 二叉搜索树存在的问题

添加、删除节点时,都可能导致二叉搜索树退化成链表。为了防止二叉搜索树退化成链表,让添加、删除搜索的复杂度维持在O(logn),提出平衡的概念。

1.2 平衡(Balance)

平衡:当节点数量固定时,左右子树的高度越接近,这棵二叉树就越平衡(高度差低)

1.3 理想平衡

最理想的平衡,就是像完全二叉树、满二叉树那样,高度是最小的。

1.4 如何改进二叉搜索树?

首先,节点的添加、删除顺序是无法限制的,可以认为是随机的

所以,改进方案是:在节点的添加、删除操作之后,想办法让平衡搜索树恢复平衡(减小树的高度)

总之,一棵平衡二叉搜索树,完全可以达到理想平衡,但是付出的代价可能会变大。比如调整的次数比较多,反而增加了时间复杂度。

比较合适的改进方案是:用尽量少的调整次数达到适度平衡即可

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

1.5 平衡二叉搜索树(Banlanced Binary Search Tree,BBST)

  • 英文简称:BBST
  • 常见的平衡二叉搜索树:
  • AVL树
    • Windows NT内核中广泛使用
  • 红黑树
    • C++ STL(比如map、set)
    • Java的TreeMap、TreeSet、HashMap、HashSet
    • Linux的进程调度
    • Ngix的timer管理
  • 一般也称它们为:自平衡的二叉搜索树(Self-balancing Binary Search Tree)

标签:Tree,二叉,搜索,二叉树,平衡,节点
From: https://www.cnblogs.com/keyongkang/p/17880481.html

相关文章

  • 第5章. 二叉树
    二叉树一、树的基本概念节点、根节点、父节点、子节点、兄弟节点一棵树可以没有任何节点,称为空树一棵树可以只有一个节点,也就是只有根节点子树、左子树、右子树节点的度:子树的个数树的度:所有节点度中的最大值叶子节点:度为0的节点非叶子节点:度不为0的节点层数:根节点......
  • 17_二叉树的所有路径
    二叉树的所有路径给你一个二叉树的根节点root,按任意顺序,返回所有从根节点到叶子节点的路径。叶子节点是指没有子节点的节点。示例1:输入:root=[1,2,3,null,5]输出:["1->2->5","1->3"]示例2:输入:root=[1]输出:["1"]【思路】题目要求从根节点到叶子的路径,所以需要......
  • java进行文件搜索的一个小案例
    分享一个小demo,可以查询某个文件目录下的某个文件并启动,来自黑马的IO教程importjava.io.File;importjava.io.IOException;publicclassApp3{publicstaticvoidmain(String[]args)throwsIOException{searchFile(newFile("D:/"),"pycharm64.exe");......
  • 【数据结构和算法】搜索算法
    ①搜索最小值python的min函数返回列表中的最小项1defindexOfMin(lyst):2minIndex=03currentIndex=14whilecurrentIndex<len(lyst):5iflyst[currentIndex]<lyst[minIndex]:6minIndex=currentIndex7currentI......
  • 开发者热议GitHub代码搜索政策,最佳搜索解决方案探索
    近日,名为koepnick的开发者因在一台老式电脑上使用GitHub搜索自己的存储库代码,却没有手机等设备协助验证,导致无法登录GitHub账户,发文怒斥GitHub:如若没有登录,就无法使用搜索代码服务,与其这样不如弃用。 其实,早在今年6月,GitHub官方便发布了一封《代码搜索现在需要登录》的公告......
  • 16_平衡二叉树
    平衡二叉树【题外话】二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。(从上往下看)二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。(从下往上看)小疑惑:为什么104.二叉树的最大深度中求的是二叉树的最大深度,也用的是后序遍历。(本质上求解的就是根节......
  • 力扣1038. 从二叉搜索树到更大和树(dfs)
    给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。提醒一下, 二叉搜索树 满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。 ......
  • 15_完全二叉树的节点个数
    完全二叉树的节点个数给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第h层,则该层包含1~2h个节点。示......
  • vue 树形选择器数据处理 + 搜索查询时每一层级都可选
    vue树形选择器主要用后端处理显示数据根据el-Element官网可知,想要使用树形选择器<el-tree-select>就要提供以下形式的数据:data=[{value:'1',label:'Levelone1',children:[{value:'1-1',label:'Leveltwo1-1&......
  • 不平衡少样本数据集的算法方案
    在图像实际的细分场景中,经常会遇到数据集不均衡以及数据集数量有限等问题,如何有效利用数据集,提升自己的算法效果,这里大刀基于自己的实际项目经验,分享在实际图像分类领域遇到问题,以及解决的方案,供参考。前言大家好,我是张大刀。之前有个智慧工地的项目,其中一个需求是监控工地......