“红黑树”的含义是什么:TreeSet将其元素存储在红黑树中,根据其值对其元素进行排序;

时间:2016-03-08 05:52:04

标签: java collections set treeset

我正在阅读Java Tutorial Oracle,我遇到了以下声明。

  

TreeSet将其元素存储在一个红黑树中,对它进行排序   基于价值观的要素;

我对“红黑树”这个短语感到困惑,我做了一个基本的网络搜索,并没有找到满意的答案。

3 个答案:

答案 0 :(得分:3)

红黑树是一种自平衡二叉搜索树。有几种自平衡树,如2-3棵树,AA树,AVL树和红黑树。

当您考虑可能存在非自平衡二叉搜索树的最坏情况时,自平衡树的目的是显而易见的。

考虑这种情况:首先在空树中插入一个整数(非自平衡)。继续插入整数,每个值大于前一个值。最差的转换检索时间是插入时间复杂度为O(n)的最后一个元素。这是因为您必须遍历整个树才能到达所需的元素,就像链接列表一样。

这比时间复杂度为O(lg n)的平衡二叉搜索树更糟糕。因此,有一些方法,如红黑树,试图确保树是平衡的(意味着每个孩子的重量是相同的)。

答案 1 :(得分:2)

对我来说,第三个搜索结果是https://en.wikipedia.org/wiki/Red%E2%80%93black_tree,这很好地解释了这个概念。

基本上,这是一种保持二叉树几乎平衡的方法,因此不依赖于插入顺序,它不会退化为链表,同时保持插入(和删除)成本低。

答案 2 :(得分:0)

1)每个节点的颜色为红色或黑色,树的根总是黑色。

2)没有两个相邻的红色节点(红色节点不能有红色父节点或红色节点,红色节点不能有黑色父节点)。

3)从根到NIL节点的每条路径都有相同数量的黑色节点。