当前位置:首页 > 经验 >

红黑树和b+树的区别(b树和b+树的优缺点)

来源:原点资讯(www.yd166.com)时间:2022-11-14 14:11:36作者:YD166手机阅读>>

二分查找算法

二分查找又称折半查找,它是一种效率较高的查找方法。

二分查找要求:(1)必须采用顺序存储结构 (2)必须按关键字大小有序排列

原理:将数组分为三部分,依次是中值前,中值(所谓的中值就是数组中间位置的那个值),中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分。

实现:二分查找的实现用递归和循环两种方式。

package com.company.datastructure;

public class BinarySearchDemo {

public static int BinarySearch(int arr[], int value, int length){

int low = 0;

int high = length -1;

int mid;

while(low <= high){

mid = (low high)/2;

if(arr[mid] == value)

return mid;

else if(arr[mid] > value)

high = mid -1;

else

low = mid 1;

}

return -1;

}

public static void main(String[] args) {

int target = 66;

int arr[] = {1,2,3,9,22,33,44,55,66,77,88,99,100};

int result = BinarySearch(arr, target, arr.length);

System.out.println("Result: " result);

}

}

时间复杂度

采用的是分治策略。

最坏的情况下两种方式时间复杂度一样:O(log2 N)

红黑树和b+树的区别,b树和b+树的优缺点(1)

最好情况下为O(1)。

空间复杂度

算法的空间复杂度并不是计算实际占用的空间,而是计算整个算法的辅助空间单元的个数。

非递归方式:

由于辅助空间是常数级别的所以:空间复杂度是O(1);

递归方式:

递归的次数和深度都是log2 N,每次所需要的辅助空间都是常数级别的:

空间复杂度:O(log2N )

红黑树

红黑树是一种自平衡二叉查找树。

除了二叉查找树的一般要求,红黑树还有如下的额外要求:

(1)结点是红色或黑色的。

(2)根结点是黑色的。

(3)所有叶结点是黑色的空结点。

(4)每个红色结点的两个子结点都是黑色的。

(5)从任一结点到其每个叶子结点的路径包含相同数量的黑色结点。

性质:从根结点到叶子结点的最长路径不超过最短路径的2倍。例如根结点-黑色结点-叶结点,最短路径为2;根结点-红色结点-黑色结点-红色结点-叶结点,最长路径为4。

红黑树和b+树的区别,b树和b+树的优缺点(2)

B-树

B-树是一种平衡的多路查找树。

一棵m阶的B树需要满足的特性:

(1)根结点的子结点数范围为2 ~ m个。

(2)除根结点、叶结点以外的结点的子结点数范围为⌈m/2⌉ ~ m个。

(3)叶结点在同一层,有(⌈m/2⌉-1) ~ (m-1)个关键字(所有非根结点的性质);根结点有1 ~ (m-1)个关键字。

(4)有k个子结点的结点中含有k-1个关键字。

红黑树和b+树的区别,b树和b+树的优缺点(3)

B 树

一棵m阶的B 树和m阶的B树的差异:

(1)有n个子结点的结点中含有n个关键字。

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

(3)所有非叶子结点可以看成是索引部分,结点中仅含有其子树中的最大(或最小)关键字。

通常在B 树上有两个头指针,一个指向根结点,另一个指向关键字最小的叶子结点。

因此可以对B 树进行两种查找运算:一种是从最小关键字开始进行顺序查找,另一种是从根结点开始进行随机查找。

红黑树和b+树的区别,b树和b+树的优缺点(4)

小结
  • B树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点;
  • B-树:多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点;

所有关键字在整颗树中出现,且只出现一次,非叶子结点可以命中;

  • B 树:在B-树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引;B 树总是到叶子结点才命中;
  • B*树:在B 树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3;

栏目热文

二叉树怎么转化为红黑树(红黑树和平衡二叉树区别)

二叉树怎么转化为红黑树(红黑树和平衡二叉树区别)

1)引言 在前几篇文章中介绍了 2-3 树的定义以及插入删除操作。本篇文章将在 2-3 树的基础上更进一步,介绍比 2-...

2022-11-14 14:25:16查看全文 >>

红黑树对比二叉树好处有哪些(二叉树到底有啥用)

红黑树对比二叉树好处有哪些(二叉树到底有啥用)

二叉查找树:#二叉查找树就是左结点小于根节点,右结点大于根节点的一种排序树,也叫二叉搜索树。也叫BST,英文Binary...

2022-11-14 14:26:52查看全文 >>

二叉平衡树和红黑树的区别(红黑树为什么是平衡二叉树)

二叉平衡树和红黑树的区别(红黑树为什么是平衡二叉树)

二叉搜索树:也称二叉查找树,或二叉排序树。定义也比较简单,要么是一颗空树,要么就是具有如下性质的二叉树:(1)若任意节点...

2022-11-14 14:15:53查看全文 >>

100斤猪饲料加多少小苏打(100斤料拌多少小苏打)

100斤猪饲料加多少小苏打(100斤料拌多少小苏打)

小苏打,我们在做面点经常用到,又叫面起子,属于食品添加剂,听说在养猪上也有不少妙用,总结了以下几点用法,给大家参考。1、...

2022-11-14 14:28:12查看全文 >>

猪饲料营养成分配方(猪饲料配方到底含不含激素)

猪饲料营养成分配方(猪饲料配方到底含不含激素)

仔猪的饲养管理很关键,仔猪能够健康的生长发育,就是一个好的开端,仔猪饲养得越好,以后育肥的效果就会更好,所以,我们一定要...

2022-11-14 14:25:42查看全文 >>

二叉树对比红黑树(二叉树数据图解)

二叉树对比红黑树(二叉树数据图解)

在讲解HBase的LSM合并树之前,我们需要来了解一些常用的数据结构知识。跳表链表上图是一个有序链表,我们要检索一个数据...

2022-11-14 14:23:35查看全文 >>

红黑树解决了什么问题(红黑树解决冲突)

红黑树解决了什么问题(红黑树解决冲突)

来源公众号:苦逼的码农作者:帅地红黑树算是很难的一种数据结构吧,一般很少考察插入、删除等具体操作步骤,如果遇到要你手写红...

2022-11-14 14:11:08查看全文 >>

红黑树结构优缺点(红黑树解决什么问题)

红黑树结构优缺点(红黑树解决什么问题)

1. 红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过...

2022-11-14 14:35:35查看全文 >>

红黑树和平衡二叉树区别(详解什么是平衡二叉树)

红黑树和平衡二叉树区别(详解什么是平衡二叉树)

一,AVL树(平衡二叉树)(1)简介AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现...

2022-11-14 14:23:26查看全文 >>

通俗讲红黑二叉树原理(红黑树为什么是平衡二叉树)

通俗讲红黑二叉树原理(红黑树为什么是平衡二叉树)

【51CTO.com原创稿件】 学过数据结构都知道二叉树的概念,而又有多种比较常见的二叉树类型,比如完全二叉树、满二叉树...

2022-11-14 14:42:53查看全文 >>

文档排行