红黑树怎么实现_红黑树怎么实现

红黑树怎么实现_红黑树怎么实现红黑树 与 B+树区别和应用场景红黑树红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。再二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:1. 节点是红色或黑色2. 根节点是黑色。3 每个叶节点(NIL节点,空节点)是黑色的。4 每个红色节点的两个子节点都是

红黑树 与 B+树区别和应用场景   红黑树   红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。再二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:   1. 节点是红色或黑色   2. 根节点是黑色。   3 每个叶节点(NIL节点,空节点)是黑色的。   4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)   5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。   红黑树和avl(二叉平衡树)的比较   1. 如果插入一个node引起了树的不平衡,AVL和RB-Tree(红黑树)都是最多只需要2次旋转操作,即两者都是O(1);但是在删除node引起树的不平衡时,最坏情况下,AVL需要维护从被删node到root这条路径上所有node的平衡性,因此需要旋转的量级O(logN),而RB-Tree最多只需3次(因为不需要严格的平衡,从根到叶子的最长的可能路径不多于最短的可能路径的两倍长)旋转以及修改节点的颜色,只需要O(1)的复杂度。   2. 其次,AVL的结构相较RB-Tree来说更为平衡,在插入和删除node更容易引起Tree的unbalance,因此在大量数据需要插入或者删除时,AVL需要rebalance的频率会更高。因此,RB-Tree在需要大量插入和删除node的场景下,效率更高。自然,由于AVL高度平衡,因此AVL的search效率更高。   分享一个红黑树应用的视频讲解:Linux c/c++ 后台开发——90分钟搞定红黑树应用   红黑树实际应用:   IO多路复用epoll的实现采用红黑树组织管理sockfd,以支持快速的增删改查.ngnix中,用红黑树管理timer,因为红黑树是有序的,可以很快的得到距离当前最小的定时器.java中TreeMap,jdk1.8的hashmap的实现.   B+树   B+ 树是一种树数据结构,是一个n叉排序树,每个节点通常有多个孩子,一棵B+树包含根节点、内部节点和叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上孩子节点的节点。   ( ps:举例说明3阶B-树指的是每个结点最多2个关键字,3个孩子)   B+树是对B树的一种变形树,它与B树的差异在于:有k个子结点的结点必然有k个关键码;非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录,便于区间查找和遍历。B+ 树的优点在于:由于B+树在内部节点上不包含数据信息,因此在内存页中能够存放更多的key。 数据存放的更加紧密,具有更好的空间局部性。因此访问叶子节点上关联的数据也具有更好的缓存命中率。B+树的叶子结点都是相连的,因此对整棵树的便利只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。相邻的素可能在内存中不相邻,所以缓存命中性没有B+树好。但是B树也有优点,其优点在于,由于B树的每一个节点都包含key和value,因此经常访问的素可能离根节点更近,因此访问也更迅速。下面是B 树和B+树的区别图:   
红黑树怎么实现_红黑树怎么实现
红黑树怎么实现_红黑树怎么实现   b+树的应用场景:   B/B+树是为了磁盘或其它存储设备而设计的一种平衡多路查找树(相对于二叉,B树每个内节点有多个分支),与红黑树相比,在相同的的节点的情况下,一颗B/B+树的高度远远小于红黑树的高度(在下面B/B+树的性能分析中会提到).B/B+树上操作的时间通常由存取磁盘的时间和CPU计算时间这两部分构成,而CPU的速度非常快,所以B树的操作效率取决于访问磁盘的次数,关键字总数相同的情况下B树的高度越小,磁盘I/O所花的时间越少.二叉查找树的结构不适合数据库,因为它的查找效率与层数相关。越处在下层的数据,就需要越多次比较。对于数据库来说,每进入一层,就要从硬盘读取一次数据,这非常致命,因为硬盘的读取时间远远大于数据处理时间,数据库读取硬盘的次数越少越好。这种数据结构,非常有利于减少读取硬盘的次数。假定一个节点可以容纳100个值,那么3层的B树可以容纳100万个数据,如果换成二叉查找树,则需要20层!假定操作系统一次读取一个节点,并且根节点保留在内存中,那么B树在100万个数据中查找目标值,只需要读取两次硬盘。   原文:红黑树 与 B+树区别和应用场景

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/21888.html

(0)
上一篇 2024年 9月 15日 上午9:24
下一篇 2024年 9月 15日

相关推荐

关注微信