红黑树存在的意义:
红黑树是一种典型的数据结构,任何一种数据结构的存在都有其意义,一定是在某个应用方面存在着极高的利用价值,红黑树是一种高效查找算法数据结构,主要就是为了高效的进行 “ 增删改查” 。下面首先简要的给出目前典型的查找方法:
(1)暴力搜索:顾名思义,就是对待查找的数据从头到尾遍历,是思路最简单但效率低下的算法,但并不意味着暴力搜索方法就不存在了应用。
(2)二分查找:二分查找是一种高效的查找算法,但二分算法查找的应用条件是查找序列应为有序序列,转换成数据结果就是二叉查找树(二叉搜索树、二叉排序树),时间复杂度为O(logn)。
(3)哈希查找:哈希查找是最高效的查找方法,时间复杂度为O(1),但哈希查找存在“Hash冲突”,详见Hash。
(4)bfs/dfs:图论中的搜索方法。
(5)B-Tree:有的称为B树,有的称为B-树。
(6)B+Tree:B+树
(7)二叉搜索树:是一种满足“左<根<右”的特殊二叉树,极端的二叉搜索树是一种不平衡的二叉树,退化为链表结构,查找的时间复杂度O(n),这种情况显然不符合二分查找的思想,由此引进了平衡树(AVL)的概念,但AVL追求的是极致的平衡,实际应用中不会应用。
(8)红黑树:高效的查找算法数据结构,底层的数据结构就是一种“特殊的二叉查找树”,就是为了避免二叉搜索树退化为链表的这种情况。java中的HashMap就是一种链表+红黑树的组合。
红黑树:
1、红黑树的发展历程:
笔者此处所说的发展历程并不是指红黑树在历史时间节点上的发展,而是从数据结构上来看,任何一种数据结构都是在简单的数据结构基础上发展的,红黑树也是如此。
(1)二叉查找树:
首先给出二叉查找树的定义:二叉查找树任意节点的左子树值小于等于该节点,右子树的值大于等于该节点。在二叉查找树中查找数据实际上就