b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

数据结构中的公用树(BST二进制搜索树,AVL平衡二进制树,RBT红黑树,B树,B

电脑杂谈  发布时间:2020-04-24 13:13:15  来源:网络整理

平衡二叉排序树_排序二叉树的建立_平衡二叉树的平衡因子怎么

BST树

二进制搜索树:

1. 所有非叶节点最多有两个儿子(左和右);

2. 所有节点都存储一个关键字;

3. 非叶节点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;

例如:

BST树搜索从根节点开始,如果查询关键字等于节点关键字,则命中;

否则,如果查询关键字小于节点关键字,请输入左儿子;如果大于node关键字,请输入

好儿子;如果左儿子或右儿子的指针为空,则找不到相应的关键字;

如果BST树的所有非叶节点的左右子树的数量保持相同(平衡),则B树

的搜索效果

接近二进制搜索;但是它比连续搜索空间中的二进制搜索更有优势,因为它改变了BST树的结构

(插入和删除节点)不需要移动很大部分的内存数据,甚至不需要固定的开销;

例如:

但是,在多次插入和删除之后,BST树可能会导致不同的结构:

右侧也是BST树平衡二叉排序树,但其搜索性能已经是线性的;同一组关键字可能会导致不同的

树结构索引;因此,在使用BST树时,还必须考虑保持BST树结构尽可能远,并避免使用正确的图片结构,即

这是所谓的“平衡”问题;

AVL平衡二进制搜索树

定义: 具有以下属性的平衡二叉树或空树或二叉排序树:

(1)左右子树的深度之差的绝对值不超过1;

平衡二叉排序树_平衡二叉树的平衡因子怎么_排序二叉树的建立

(2)左右子树仍然是平衡的二叉树.

平衡因子BF =左子树深度-右子树深度.

平衡二叉树的每个节点的平衡因子只能为1、0,-1. 如果其绝对值超过1,则二进制排序树不平衡.

如图所示是平衡树和不平衡树的:

RBT红黑树

AVL是一棵严格平衡的树,因此在添加或删除节点时,根据不同情况,旋转次数要多于红色和黑色树;

红色和黑色之间的平衡较弱. 添加或删除节点时使用非严格平衡来减少旋转数;

因此,简单来说,搜索数量远大于插入和删除操作,然后选择AVL树. 如果进行搜索,插入和删除的次数几乎相同,则应选择RB树.

红黑树中的每个节点包含五个字段,颜色平衡二叉排序树,键,左,右,p. 如果相应的指针字段不存在,则将其设置为NIL.

通常,红黑树满足以下属性,即只有满足以下所有属性的树才称为红黑树:

1)每个节点都是红色或黑色.

2)根节点是黑色的.

3)每个叶节点,即空节点(NIL)为黑色.

4)如果节点为红色,则其两个儿子均为黑色.

5)对于每个节点,从该节点到其子孙的所有路径都包含相同数量的黑色节点.

下图显示了一棵红黑树:

B树

这是一个平衡的多向搜索树(不是二进制):

1. 定义任何非叶节点最多有M个儿子;和M> 2;

2. 根节点的子节点数为[2,M];

排序二叉树的建立_平衡二叉排序树_平衡二叉树的平衡因子怎么

3. 根节点以外的非叶子节点的数量为[M / 2,M];

4. 每个节点至少存储M / 2-1(取整)和最多M-1个关键字; (至少2个关键字)

5. 非叶节点关键字的数量=指向子代-1的指针的数量;

6. 非叶节点的关键字: K [1],K [2],…,K [M-1];和K [i]

7. 非叶子节点的指针: P [1],P [2],…,P [M];其中P [1]指向小于K [1]的关键字

子树,P [M]指向其键大于K [M-1]的子树,其他P [i]指向其键属于(K [i-1],K [i] );

8. 所有叶节点都在同一层上;

例如: (M = 3)

从根节点开始的B树搜索,对节点内的关键字(有序)序列执行二进制搜索,如果

匹配结束,否则输入查询关键字范围的子节点;重复直到相应的子指针为

空,或者已经是叶节点;

B树特征:

1. 关键字集分布在整个树中;

2. 任何关键字都会出现,并且只会出现在一个节点中;

3. 搜索可能会在非叶子节点结束;

4. 其搜索性能相当于在完整的关键字集中进行二进制搜索;

5. 自动电平控制;

由于它限制了除根节点以外的其他非叶子节点,因此它至少包含M / 2个子节点,从而确保至少有这些节点

利用率,其最差的搜索性能是:

其中M是非叶子节点的最大数量,N是关键字的总数;

因此B树的性能始终等同于二叉搜索(与M值无关),因此B树平衡没有问题;

由于M / 2的限制,在插入节点时,如果节点已满,则需要将节点拆分为两个以占据每个节点

排序二叉树的建立_平衡二叉树的平衡因子怎么_平衡二叉排序树

M / 2个节点;删除节点时,需要合并两个小于M / 2的兄弟节点;

B +树

B +树是B树和多路径搜索树的变体:

1. 它的定义与B树基本相同,除了:

2. 非叶子节点的子树指针的数量与关键字的数量相同;

3. 非叶子节点子树指针P [i],指向其键值属于[K [i],K [i + 1])的子树

(B树是一个开放间隔);

5. 向所有叶节点添加一个链指针;

6. 所有关键字都出现在叶节点上;

例如: (M = 3)

B +搜索与B树基本相同,不同之处在于B +树仅命中叶子节点(B树可以位于

非叶​​子节点命中),其性能也等同于在完整的关键字集中进行二进制搜索;

B +功能:

1. 所有关键字都出现在叶节点的链接列表(密集索引)中,而链接列表中的关键字恰好

已订购;

2. 不可能击中非叶子节点;

3. 非叶节点等效于叶节点的索引(稀疏索引),叶节点等效于存储

(关键字)数据数据层;

4. 更适合文件索引系统;例如,对于已索引的记录,查找10 <= id <= 20,只要通过根节点搜索id = 10的叶节点,然后根据叶节点的链接列表查找第一个大于20,比每次从10到20搜索根节点的B树搜索都有效.

B *树

它是B +树的变体. 在B +树的非根和非叶节点上添加指向Brother的指针;

B *树定义非叶子节点关键字的数量至少为(2/3)* M,即该块的最小使用率为2/3

平衡二叉排序树_排序二叉树的建立_平衡二叉树的平衡因子怎么

(替换B +树的1/2);

B +树拆分: 当一个节点已满时,将分配一个新节点,并且将原始节点数据的1/2

复制到新节点,最后将新节点的指针添加到父节点; B +树的拆分只会影响原始节点和父节点

该节点不会影响兄弟节点,因此它不需要指向兄弟的指针;

B *树拆分: 当一个节点已满时,如果它的下一个同级节点未满,则它的一部分

将数据移动到同级节点,在原始节点中插入关键字,最后在父节点中修改同级节点的关键字

(因为同级节点的关键字范围已更改);如果同级节点也已满,则它在原始节点和同级节点之间

在两者之间添加一个新节点,并将数据的1/3复制到新节点,最后将新节点的指针添加到父节点;

因此,B *树分配新节点的可能性低于B +树,并且空间利用率更高;

摘要

B树: 二叉树,每个节点仅存储一个关键字,等于hit,小于左节点,大于

转到右侧节点;

B树: 多路搜索树,每个节点存储M / 2至M个关键字,非叶节点存储指向键

单词范围的子节点;

所有关键字都出现在整个树中,并且只出现一次,非叶子节点可以被击中;

B +树: 在B树的基础上,向叶节点添加一个列表指针,所有关键字都在叶节点中

出现

,非叶子节点用作叶子节点的索引; B +树总是打叶子节点;

B *树: 在B +树的基础上,还为非叶子节点添加链接列表指针,以降低节点的最低利用率.

从1/2增加到2/3;

B + / B *树应用

索引-索引文件和数据文件是分开的,索引文件仅保存数据记录的地址.

索引-表数据文件本身是由B + Tree组织的索引结构. 该树的叶子数据字段包含完整的数据记录. 该索引的键是数据表的主键.

倒排索引-它也可以由B树及其变体实现,但不一定由B树及其变体实现. 例如,Lucene不使用B树结构,因此Lucene可以使用二进制搜索算法快速定位关键字. 在实施过程中,Lucene将以下三列保存为词典文件(术语词典),频率文件(频率)和位置文件(位置). 词典文件不仅存储每个关键字,还保留了指向频率文件和位置文件的指针,可以通过指针找到关键字的频率信息和位置信息.

关键字文章编号[出现频率]出现位置guangzhou1 [2] 3,6he2 [1] 1i1 [1] 4live1 [2] 2,5,2 [1] 2shanghai2 [1] 3tom1 [1] 1

参考文章

B树和B +树的应用: 数据搜索和索引

B树,B树,B +树,B *树


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-187185-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...