Last Updated: 2024-02-25 14:49:57 Sunday
-- TOC --
一般B-Tree的B被解释为Balance,因为B-Tree在任何时候,都是平衡的。不同于各种BSTree(AVLTree或红黑树等),B-Tree的很矮,每个节点内包含的key数量很多。这种结构在数据库的实现中很常见,因为访问硬盘的性能相对于访问内存来说,慢了好几个数量级,假设B-Tree节点无法全部存放在内存中,矮胖型的B-Tree结构,可以显著减少访问硬盘的次数。
数据库都是直接IO访问硬盘。
B-Tree将所有二叉搜索树一般化了...
B-Tree的特点:
B-Tree的degree最小为2,此时每个internal节点有2,3或4个child,这种树有个名字,叫做2-3-4 tree,有的文献用2-4 tree(注意与2-3 tree进行区别,按B-Tree的定义,2-3 tree不是B-Tree)。最初的红黑树,就是以2-3-4 tree的面貌出现的。红黑树与2-3-4 tree可以相互转化。
B-Tree的高度:
假设key数量为\(n\),degree为\(t\),高度为\(h\),能够画出最高的tallest B-Tree如下:
$$\begin{aligned} 1+2(t^h-1)& \le n \\ t^h & \le \cfrac{n+1}{2} \\ h & \le \log_t\cfrac{n+1}{2} \end{aligned}$$
同理,就不画图了,最矮的shortest B-Tree,每个节点都有2t-1个key,设高度为h,key的数量为n,
$$h \ge \log_{2t}{\cfrac{n}{(2t-1)2t}}$$
因此,B-Tree的高度就在这两个数之间。
B+Tree是B-Tree的一种变体。
本文链接:https://cs.pynote.net/ag/tree/202402171/
-- EOF --
-- MORE --