скручивание кучи Java - PullRequest
       13

скручивание кучи Java

1 голос
/ 25 июня 2011

Не должно быть Java, но я пытаюсь понять процесс слияния для перекоса кучи. Я не понимаю, почему часть, выделенная жирным шрифтом ниже в шагах, такая, какая она есть.

  • Сравните корни двух куч; пусть р будет куча с меньшим корнем и q будь другой кучей.
  • Пусть r будет именем результирующего новая куча.
  • Пусть корень г будет корнем р (меньший корень), и пусть R справа поддерево будет левым поддеревом р.
  • Теперь вычислите левое поддерево r с помощью рекурсивное слияние правого поддерева р с q.

Может ли алгоритм быть модифицирован вдоль оси симметрии (например, я делаю зеркальное отражение дерева) и позволить левому поддереву r быть правым поддеревом p и рекурсивно сливаться вниз по правой стороне r? Это просто соглашение или более эффективно сделать это так, как указано выше?

1 Ответ

0 голосов
/ 26 июня 2011

Выбор влево / вправо совершенно произвольный, но как только вы сделаете это, вы должны придерживаться его.В конце концов, вы можете просто взять свою кучу, нарисовать ее, а затем отразить, и она все равно будет действительной кучей.Основная причина этого заключается в том, что вы можете взять любую программу и поменять местами все переменные влево и вправо, и результирующая программа все равно будет действительной, и, кроме того, будет действовать точно так же.

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