Какое дерево используется в Java TreeSet и TreeMap? - PullRequest
14 голосов
/ 27 августа 2010

Это деревья AVL, красно-черные деревья или что-то еще?

Ответы [ 5 ]

24 голосов
/ 27 августа 2010

Красно-черные деревья, как описано в первой строке javadoc.

19 голосов
/ 27 августа 2010

Из документации java.util.TreeMap<K,V>:

A Красно-черное дерево на основе NavigableMap реализация.

Для вопросов, подобных этим, вы всегда должны сначала обратиться к документации. API не должен описывать ALL внутренней работы class, но элементарные сведения, такие как общие структуры данных и используемые алгоритмы, обычно документируются.


Другие мелочи платформы Java Collections Framework

Это все мелочи, которые также четко документированы:

  • TreeSet реализовано с TreeMap
  • HashSet реализовано с HashMap
  • Collections.sort использует модифицированную сортировку слиянием
  • Map<K,V> не является Collection<?>
  • ArrayList не определяет точную политику роста (в отличие, скажем, Vector)

Смежные вопросы

4 голосов
/ 15 сентября 2013

Это красно-черное дерево в реализации Java для настольных компьютеров Oracle, но AVL-дерево в Android .

4 голосов
/ 27 августа 2010

В первом предложении Javadoc TreeMap говорится:

Реализация NavigableMap на основе красно-черного дерева

0 голосов
/ 27 августа 2010

TreeSet основан на TreeMap. И они используют красно-черное дерево, красно-черное дерево - это разновидность AVL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...