чуть глубже рядового обывателя за теорию алгоритмов / структур данных?
Хотелось бы несколько созвонов с консультациями по точечным вопросам на платной основе.
ты лучше здесь вопросы кидай, тут и ответят, и если кто-то не так ответил - на ходу поправят
Хорошо, спасибо. В структуре heap есть требование, что дети (левый и правый) оба должны быть меньше родителя (max heap), но ничего не сказано про то, должен ли левый ребенок быть больше/меньше правого и наоборот. Значит ли это, что у нас есть не 1 способ построить хип, а несколько? И если несколько, то подскажите, пожалуйста, как точно посчитать это число?
Да, относительный порядок на детей не накладывается. Куч можно построить много. Сколько так сразу и не скажешь
Можно посчитать динамикой, корень это максимум, дальше для каждого деления напополам строим кучу
Я подозреваю, что если нет ограничений на какую-то сбалансированность, то это (n-1)!
Куча сбалансированная ж
Тут также стоит уточнить, при перестановоке левого и правого сына вместе с поддеревьями считать ли новую и старую кучу различными
Если структура зафиксирована и нет повторений, то можно посчитать динамикой. Необязательно даже двоичная куча. f(root) = prod (f_i)* fact(size(f) - 1)/prod(fact(size(f(i)-1))
Обсуждают сегодня