上篇文章我们详细了解了二叉树和红黑树的区别,那么红黑树和b树的区别的小伙伴们了解过吗?这次我们就来熟悉熟悉这个。
红黑树
不追求“完全平衡 ”,只要求部分达到平衡要求就是红黑树,它以降低对旋转要求来提高性能。
红黑树能够以 O(log2 n) 的时间复杂度进行增删查改等操作。除此之外,因为它的设计,所有的不平衡都能够在三次旋转之内解决。在红黑树中,它的算法时间复杂度是与AVL相同的,且统计性能会比AVL树更高。
红黑树并不能够适应所有应用树的领域。如若数据上为静态,那么最好让它们待在能够插入,且不影响平衡的地方会具有更好的性能。如若数据为完全静态,那你可以试着做一个哈希表,性能会更优。
b树
一棵m阶的B树,特性如下:
总结:
红黑树实际上就是平衡树的一种,其复杂的定义与规则都是为了保证树的平衡性。因为树的查找性能是取决于树的高度的,让树尽可能平衡,就是为了降低树的高度。
我们知道,b树经常被用在文件系统的索引上,为什么文件索引比较喜欢用B树不是红黑树呢?
这是因为文件系统和数据库的索引都是存在硬盘上的,且数据量大时,是不一定能一次性加载到内存的。
一棵树都无法一次性加载进内存,又如何谈查找。因此b树的多路存储能力就出来了,可以每次加载B树的一个节点,然后一步步往下找。
之所以设计成多路,就是为了进一步的降低树的高度,路数越多,树的高度就越低。所以,如果在内存中,红黑树实际是比b树效率更高的,但如若涉及到磁盘操作,b树就更强点。
以上就是今天的全部内容,关于红黑树还有不了解内容的话就来我们网站中的java常见问答里了解具体吧。
推荐阅读: