Поиск последнего элемента бинарного куче

цитирую Википедию:

вполне допустимо использоватьтрадиционные бинарное дерево структуры данныхдля реализации двоичные кучи. Существуетвопрос с поиском, прилегающихэлемент на последнем уровне надвоичные кучи при добавлении элементакоторые могут быть разрешены*алгоритмически*...

какие-то идеи о том, как такой алгоритм может работать?

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

Любая помощь приветствуется.


Недавно я зарегистрировался OpenID аккаунт и я не в силах изменить мой начальный пост не Комментировать ответы. Поэтому я отвечаю через этот ответ. Извините за это.


цитируя Митч Пшеницы:

@Yse: ваш вопрос, "Как мне найтипоследний элемент двоичные кучи"?

да, это так.Или, чтобы быть более точным, то меня интересует вопрос: "Как мне найти последний элемент Курение на основе массива двоичные кучи?".

цитируя Suppressingfire:

существует какой-то контекст, в котором вы находитесьзадаю этот вопрос? (т.е., естьнекоторые конкретные проблемы вы пытаетесьрешить?)

Как говорилось выше, я хотел бы знать, хороший способ, чтобы "найти последний элемент Курение на основе массива двоичные кучи", что необходимо для вставки и удаления узлов.

цитируя Рой:

кажется наиболее понятным для меняпросто использовать обычный двоичного дереваструктура (с помощью прут и Узлаопределяется как [данные, pLeftChild,pRightChild]) и добавить два дополнительныхуказатели (и pInsertionNodepLastNode). pInsertionNode иpLastNode оба будут обновлены в течениевставки и удаления подпрограммычерез некоторое время, когда данныев рамках изменения структуры. Этодает O(1) доступ к обоим вставкиточки и последний элемент этой структуры.

да, это должно сработать. Если я не ошибаюсь, это может быть немного сложно найти вставки узел и последний узел, когда их изменить расположение к другому поддерево из-за удаления/вставки. Но я дам это попробовать.

цитируя Зак Scrivena:

Как о выполнении глубинупоиск...

да, это был бы хороший подход. Непременно попробую.

Еще я интересно, если есть способ, чтобы "вычислить" места последнего узла и курсор. Высота двоичные кучи с N узлами может быть рассчитана путем взятия журнала (основание 2) наименьшая степень двойки, которая больше, чем N., Пожалуй, можно рассчитать количество узлов на глубочайшем уровне. Тогда это была, пожалуй, можно определить как " кучи " нужно пройти, чтобы найти точку вставки или узла для удаления.

Найдено 3 ответа:

Finding last element of a binary heap

http://stackoverflow.com/questions/500057/finding-last-element-of-a-binary-heap

Посмотреть решение →