Создание правильной кучи - PullRequest
1 голос
/ 02 июня 2011

Мне просто нужно проверить, правильно ли я это делаю.Я проверил вики на наличие кучи, но в анимации кажется, что для построения кучи она вставляет числа в узлы и упорядочивает их по ходу.

Вопрос задает вопрос «Нарисовать правильную кучу с этими элементами».. {7, 12, 1, 3, 22, 5, 11} в виде дерева "

Я пробовал это на нескольких примерах, и, кажется, мне следует сначала расположить узлы, а затем изменить порядок узловвместо того, чтобы заказать это, как я иду.Правильно ли я это делаю?

Например, помещение элементов в узлы

       7

   12     1

 3  22   5  11

Порядок начинается здесь: swap 1 и 7

       7

   12     1

 3  22   5  11

Поменяйте местами 3 и 12

       1

   12     7

 3  22   5  11

Поменяйте местами 5 и 7

       1

   3       7

 12  22   5  11

.

       1

   3       5

 12  22   7  11

На самом деле это не так.

Ответ дан

       1

   7       3

 12  22   5  11

Если я начну сначала переупорядочивать кучу с левой стороны (начиная с 3), то получу правильный ответ.

1 Ответ

3 голосов
/ 02 июня 2011

На самом деле, структура данных кучи представляет собой только одно свойство, которое можно определить следующим образом: «В куче T для каждого узла v, отличного от корня, ключ, хранящийся в v, больше или равен хранимому ключу.у родителя v. "

Таким образом, существует много правильных представлений кучи на основе элементов (7, 12, 1, 3, 22, 5, 11).С этими элементами я применил алгоритм «вставка и сортировка», и результат дает еще одну версию:

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