这段时间看了一下B-树,感觉这里面好像有点故事啊。不知创造B-树的人究竟过了一个怎样的人生。

B树的增添

这是一家互联网公司。公司新招聘进来人了,名字叫A,你不可能让它立刻做管理层吧,所以先把这个新人安排到基层做一线码农。等我看看啊,A同学你是广州分舵 - 移动业务分部 - iOS组的。干了一段时间,这个iOS组的人越来越多了,为了方便管理,公司就把组分开成了两个小组,iOS界面组和iOS业务组,同属移动业务分部,然后调了A到移动业务分部做管理层。A的工作能力不上不下但是喜欢拍马屁。后来A因为所在部门膨胀分裂等原因,所以很荣幸地被升到了广州分舵,最后居然到了董事会。到了董事会就升职到头了?并不,这个公司的官僚玩得溜。董事会膨胀着膨胀着,就会出现一批特别会敛财的人。那帮有钱的人啊,事实上又形成了一个更加有权的大董事会,董事会其他人都得听他们的。这个大董事会形成了之后啊,公司所有人发现,自己居然不多不少又多了一个老板。

这是一棵B-树。一个元素新进来了,放到合适的叶节点下面。如果这个叶节点膨胀得太大了,就分裂开来,分裂点(也就是中间的节点)被调到父节点上面。如果父节点膨胀得大了,就又分裂开来。知道根节点膨胀得大了,就会分裂出新的根,旧的根成为新的根的两个子节点。这成为B-树最重要的特性:每个叶节点的的高度都是一样的

递归的关键是:膨胀,然后分裂,弹出中间那个。中间那个怎么处置交给父节点决定

B树的删除

中国有句古话叫做虎毒不食子,没说虎毒不坑爹啊。我们要说的一个世纪好爸爸的故事。就拿B君来说,B君是个败家子,三四十岁人了,都有自己家庭的人了,总是赌博赌到家徒四壁。钱不多了咋办,先找兄弟借啊。兄弟有钱就拜托兄弟转点钱过来。但是这次不同了,B的兄弟说我都已经快没钱周转了,借不了给你了。B君怎么说也是个好爸爸,不想坑儿子,就去坑爹了,从老爸那里套来了钱。老爸也终于有一天没钱了,兄弟借不了,就找爷爷拿钱。按着这样下去,最终到了曾曾曾爷爷没钱了,那么曾曾曾爷爷的老爸呢已经是挂了的,曾曾曾爷爷本人也处于濒死状态了,见到自己儿子又来借钱,曾曾曾爷爷就说:我已经是快要死的人了;这样吧,我这副金牙还值点钱,把我杀了,然后拿这金牙去卖吧。卧槽这么说着就觉得好悲伤……

这是一个B-树。从它那里删除一个不在叶节点的元素都可以转化成:将它跟它左子树的最右端(或者右子树的最左端)交换,然后删掉成为叶子的它。删掉以后平衡,说的就是上面的故事。

叶子节点删到小于最低限度了,这时它可以选择先找兄弟:左兄弟还宽裕,就把左兄弟最右端的元素通过右旋过来(用父节点中转);左兄弟穷了,但是右兄弟还宽裕,就把右兄弟最左端的元素通过左旋取过来(用父节点中转,说到底还是坑爹)。如果兄弟没有了,才去找父节点,父节点就不用想太多了,直接拿就是了,父节点自己会处理(也就是回到本段的开头,递归开始了)。留意到永远不要去拿子节点的元素。

根节点是唯一一个没有最低限度的(或者说最低就是0),随意拿就是了。一直拿拿到根节点没有元素了,就把根节点删掉。这是B-树唯一高度下降的途径


真是麻烦又不恰当的比喻。见笑了。B-Tree详细的定义和算法还请翻课本。本文只是为了加深记忆,或者梳理思路用。

B-树的一点既不形象又不恰当的比喻相关推荐

  1. 转《两个个很形象的依赖注入的比喻》

    何谓控制反转(IoC = Inversion of Control),何谓依赖注入(DI = Dependency Injection)?一直都半懂不懂,今天看到两个比喻,觉得比较形象. IoC,用白 ...

  2. 图像傅立叶变换的物理意义

    原文:http://blog.csdn.net/dadaadao/article/details/6093882 傅立叶变换可以看做拉普拉斯变换的特殊形式.拉氏变换就是将原时域函数乘上一个与 σ相关的 ...

  3. 傅里叶变换在图像处理中的作用

    傅立叶变换在图像处理中非常的有用.因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法, 比如离散余弦变换,gabor与小波在图像处理中也有重要的分量. 印象中,傅立叶变换在图像处理以下几个话题 ...

  4. 图像处理的傅里叶变换理解

    傅立叶变换在图像处理中有非常非常的作用.因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法, 比如离散余弦变换,gabor与小波在图像处理中也有重要的分量. 印象中,傅立叶变换在图像处理以下几 ...

  5. 五、卷积与傅立叶变换

    有些东西没有显示出来,相看的可以移步 一.卷积 1.一维的卷积 连续: 在泛函分析中,卷积是通过两个函数f(x)f(x)和g(x)g(x)生成第三个函数的一种算子,它代表的意义是:两个函数中的一个(我 ...

  6. 图像处理中的傅里叶变换

    傅立叶变换在图像处理中有非常重要的作用.因为不仅傅立叶分析涉及图像处理很多方面,傅立 叶改进算法,比如离散余弦变换,gabor与小波在图像处理中也有重要的分量.傅立叶变换在图像处理的重要作用: 1.图 ...

  7. 傅立叶变换在图像处理中的作用

    傅立叶变换在图像处理中有非常非常的作用.因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法, 比如离散余弦变换,gabor与小波在图像处理中也有重要的分量. 印象中,傅立叶变换在图像处理以下几 ...

  8. 傅立叶变换在图像处理中的应用

    1.为什么要进行傅里叶变换,其物理意义是什么? 傅立叶变换是数字信号处理领域一种很重要的算法.要知道傅立叶变换算法的意义,首先要了解傅立叶原理的意义.傅立叶原理表明:任何连续测量的时序或信号,都可以表 ...

  9. 图像处理中的傅立叶变换

    傅立叶变换在图像处理中有非常非常的作用.因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法,比如离散余弦变换(DCT),gabor与小波(WT)在图像处理中也有重要的分量. 印象中,傅立叶变换 ...

最新文章

  1. 蔚蓝 游戏 android,永远的蔚蓝星球
  2. 【C language】函数指针
  3. Oracle 备份还原
  4. JS的window-location
  5. UE4学习-第三人称游戏的AI巡逻
  6. HTML5原生拖拽/拖放(drag drop)详解
  7. 复旦大学邱锡鹏教授《神经网络与深度学习》最新版!
  8. FTP学习的一些笔记
  9. 有道词典Linux版下载安装
  10. 使用pthread-win32工程编译静态库
  11. 对软件未来走向的看法
  12. 【系列二之图像处理系列】提取图片(1)
  13. Python深度学习入门笔记(一):使用Pandas从CSV格式的文件读取数据
  14. 趋势科技防毒墙—控管中心
  15. fft qt 代码_FFT代码详解
  16. 你不知道的JavaScript(上中下)全册
  17. Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features(2016)
  18. 重磅!项目经理指导手册和全套管理秘籍下载
  19. 直击用户大脑——用户研究新方法(眼动与脑电数据分析)
  20. 上海大学生计算机一级考试时间,2019上海各大学期末考试时间安排 什么时候期末考试...

热门文章

  1. 学vc,加油站(一)区域渐变
  2. 解决RecyclerView在ScrollView中会置顶它上面的控件
  3. “趣冷淡”怎么看?网络电话寻求共同语言
  4. fcitx输入法在wps、wineqq中失灵问题的解决
  5. hibernate开启二级缓存
  6. ASSERT()是干什么用的
  7. 【C++】函数指针的嵌套
  8. Heritrix源码分析(六) Heritrix的文件结构分析
  9. 应用流量管理,新网络管理必修课
  10. 天天都在说,无服务器计算到底是什么?