红黑树介绍
【摘要】 红黑树是什么?红黑树(Red Black Tree) 是一种特殊的二叉查找树,是在计算机学科中用到的一种数据结构。红黑树是一种特化的AVL树,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。 红黑树和...
红黑树是什么?
红黑树(Red Black Tree) 是一种特殊的二叉查找树,是在计算机学科中用到的一种数据结构。红黑树是一种特化的AVL树,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。
红黑树和平衡二叉树的区别?
红黑树是一个二叉查找树,但是又不像平衡二叉树要求所有节点左右子树高度差不超过1,红黑树只要求从一个节点到所有叶结点的路径中,最长路径不超过最短路径的两倍,所以红黑树只追求树的大致平衡。
因为对树平衡程度的不同要求,平衡二叉树在插入和删除的过程中会花费比较大的代价来维护树的平衡,所以平衡二叉树不适合插入、删除太多的场景。而红黑树只要求弱平衡,它做到了当插入和删除时,只需最多旋转3次就能实现一定程度的平衡,所以能将查询、插入和删除的时间复杂度维持在对数级别(O(logn))。
红黑树的性质
- 红黑树中节点分为黑色节点和红色节点。
- 根节点和所有叶子结点(NIL节点)是黑色。(根叶黑)
- 每条从根到叶子的路基上不能出现连续两个红色节点。(不红红)
- 从任一节点到所有叶子结点的路径上的黑色节点数量相同。(黑路同)
红黑树的应用场景
-
在java面试中,我们经常会被问道的TreeSet,hashmap,它的底层就是红黑树实现的
-
当然C++中的 STL 中,其中的map 和 set也是用红黑树实现的
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)