Как рассчитать высоту непересекающихся деревьев, реализованных с помощью эвристического ранга?
Так как очень долго я пытаюсь решить вопрос из викторины, но я получаю неправильный ответ, вопрос заключается в следующем:-
Consider the program:
for i from 1 to 12:
MakeSet(i)
Union(2, 10)
Union(7, 5)
Union(6, 1)
Union(3, 4)
Union(5, 11)
Union(7, 8)
Union(7, 3)
Union(12, 2)
Union(9, 6)
Предположим, что структура данных непересекающихся множеств реализована в виде непересекающихся деревьев с объединением по рангу эвристики.
Вычислить произведение высот результирующих деревьев после выполнения кода. Например, для леса, состоящего из четырех деревьев высотой 1, 2, 3, 1, ответом будет 6. (Вспомните, что высота дерева - это количество ребер на самом длинном пути от корня до листа. В в частности, высота дерева, состоящего только из одного узла, равна 0.)
я решаю этот вопрос и получаю ответ как 5 (2*2*1), но когда я отправляю его, он показывает неверный результат, я много раз пытался, пожалуйста, подсчитайте мне это...
0 ответов
Я понял! ответ 2. с объяснением Правильно: Верно! Там будет 3 дерева высотой 1, 1 и 2. (я сталкиваюсь с этим вопросом на edx, но это представление принимает только 2 в качестве ответа)
Я думаю, что дерево должно выглядеть примерно так:
tree1,tree2,tree 3
уровень 0: 4, 1, 2
уровень 1: 3 5, 6 9, 10 12
уровень2: 8 7 11
Вы можете попробовать это с этим сайтом визуализации https://www.cs.usfca.edu/~galles/visualization/DisjointSets.html