树形结构定义介绍

简介: B树B-树就是B树,中间是横线不是减号。B树是一种多路平衡查找树。B-树(Balance Tree),一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2

B树

B-树就是B树,中间是横线不是减号。B树是一种多路平衡查找树。

B-树(Balance Tree),一个m阶的B树具有如下几个特征: 

1.根结点至少有两个子女。

2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m

3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m

4.所有的叶子结点都位于同一层。

5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。 

 

B+ 树

一个m阶的B+树具有如下几个特征:

1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。(中间节点可以存更多元素)

2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

在数据库的聚集索引(Clustered Index)中,叶子节点直接包含卫星数据。在非聚集索引(NonClustered Index)中,叶子节点带有指向卫星数据的指针。

B+树相比B树的优势有三个:

  1. IO次数更少,中间节点不存数据可容纳更多元素 
  2. 查询性能稳定,都需要定位到叶子节点
  3. 范围查询简便,叶子节点之间是有序链表

 

二叉查找树(BST)

  1. 左子树上所有结点的值均小于或等于它的根结点的值。
  2. 右子树上所有结点的值均大于或等于它的根结点的值。
  3. 左、右子树也分别为二叉排序树。

 

红黑二叉树

红黑树是一种近似平衡的二叉查找树,它能够确保任何一个节点的左右子树的高度差不会超过二者中较低那个的一倍。

具体来说,红黑树是满足如下条件的二叉查找树(binary search tree):

  1. 每个节点要么是红色,要么是黑色。
  2. 根节点必须是黑色
  3. 红色节点不能连续(也即是,红色节点的孩子和父亲都不能是红色)。
  4. 对于每个节点,从该点至null(树尾端)的任何路径,都含有相同个数的黑色节点。

在树的结构发生改变时(插入或者删除操作),往往会破坏上述条件3或条件4,需要通过调整使得查找树重新满足红黑树的条件。

调整可以分为两类:一类是颜色调整,即改变某个节点的颜色;另一类是结构调整,集改变检索树的结构关系。结构调整过程包含两个基本操作:左旋(Rotate Left),右旋(RotateRight)。

 

目录
相关文章
|
4月前
|
前端开发 JavaScript 数据格式
使用递归写树形结构
使用递归写树形结构
19 0
|
7月前
|
存储
数据结构-树的介绍、树的定义和基本术语
树是一种非线性的数据结构,是以分支关系定义的层次结构,比如人类社会中的族谱、及各种机制、组织的关系都可以用树形象的表示。重点学习二叉树的存储和相关操作,还要讨论树、森林、二叉树的转换关系。
104 0
|
7月前
在实现链表的代码中,为什么要使用继承而不是组合?
在实现链表的代码中,为什么要使用继承而不是组合?
42 3
数组转树形结构的两种实现
数组转树形结构的两种实现
58 0
数组转树形结构(递归)
大家好,今天我将向大家分享一下数组转树形结构的方法——递归方法。
|
JavaScript
树形组件(可动态添加属性、无限嵌套)及递归展示tree数据
树形组件(可动态添加属性、无限嵌套)及递归展示tree数据
树形组件(可动态添加属性、无限嵌套)及递归展示tree数据
|
存储 索引
神奇的数据——树形结构
树 1. 树和二叉树 1.1 什么是树 树(tree)是n(n&gt;=0)个节点的有限集。当n=0时,称为空树。在任意一个非空树中存在以下特点: 有且仅有一个特定的点称为根节点。 当n&gt;1时其余的节点可分为m个互不相交的有限集,每一个集合本身又是一个树,并称为根的子树。 1.1.1 名词: 根节点(root):顶端没有“父亲”,称为根节点。 叶子节点(leaf):末端没有“孩子”,称为叶子节点。 父节点(parent):节点的上一级。 孩子节点(child) :节点的下一级。 兄弟节
247 2
神奇的数据——树形结构
C结构中包含自己的嵌套定义
C结构中包含自己的嵌套定义
70 0
|
C语言 C++
树的一些概念及实现方法
千字文章带你进入数据结构——树的世界!本篇为你介绍树的基本概念及实现方法举例。以后会给大家介绍最重要的数——二叉树的所有知识及代码实现!
153 0
树的一些概念及实现方法
|
设计模式 存储 前端开发
层次结构及对象的定义|学习笔记
快速学习层次结构及对象的定义
157 0