高薪算法+计算机职称考试数据结构和算法分析

数据结构之树结构概述(含满二叉树、完全二叉树、平衡二叉树、二叉搜

2019-02-15  本文已影响3人  MobMsg

1. 树结构示意图

补充:


2. 二叉树(Binary Tree)

2.1 满二叉树(Full Binary Tree)
2.2 完全二叉树(Complete Binary Tree)
2.3 平衡二叉树(Balanced Binary Tree)
2.4 二叉搜索树(Binary Search Tree)
2.5 红黑树(Red Black Tree)

3. B 树

B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。按照翻译,B 通常认为是Balance的简称。这个数据结构一般用于数据库的索引,综合效率较高。

3.1 B- 树

B-树 就是指 B树,也是一种用于查找的平衡树,但是它不是二叉树,B树可以拥有多于2个子节点,能够用来存储排序后的数据。这种数据结构能够让查找数据、循序存取、插入数据及删除的动作,都在对数时间内完成。这种数据结构常被应用在数据库和文件系统的实作上。

3.2 B+ 树

B+树 是 B树 的变体,也是一种多路搜索树

特性:

  1. 所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的。

  2. 不可能在非叶子结点命中。

  3. 非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层。

  4. B+树的分裂:当一个结点满时,分配一个新的结点,并将原结点中1/2的数据复制到新结点,最后在父结点中增加新结点的指针;B+树的分裂只影响原结点和父结点,而不会影响兄弟结点,所以它不需要指向兄弟的指针。

  5. 更适合文件索引系统。

3.3 B* 树

是 B+树 的变体,在 B+树 的非根和非叶子结点再增加指向兄弟的指针

特性:

  1. B*树定义了非叶子结点关键字个数至少为(2/3)M,即块的最低使用率为2/3(代替B+树的1/2)。

  2. B*树的分裂:当一个结点满时,如果它的下一个兄弟结点未满,那么将一部分数据移到兄弟结点中,再在原结点插入关键字,最后修改父结点中兄弟结点的关键字(因为兄弟结点的关键字范围改变了);如果兄弟也满了,则在原结点与兄弟结点之间增加新结点,并各复制1/3的数据到新结点,最后在父结点增加新结点的指针。

所以,B*树分配新结点的概率比B+树要低,空间使用率更高。


本篇到此完结,如有补充内容随时更新!欢迎关注本人继续跟进技术干货的更新!

上一篇下一篇

猜你喜欢

热点阅读