Уровень в двоичном дереве с большинством узлов

Каков минимальный объем пространства, необходимый для определения того, какой уровень в двоичном дереве (случайный или BST) имеет наибольшее количество узлов?

2 ответа

Решение

Если вам разрешено уничтожить дерево, то вы можете преобразовать дерево в связанный список, выполняя bfs для дерева, по существу моделируя очередь с самим деревом!

Вы можете найти информацию об этом здесь: Преобразовать двоичное дерево в связанный список, сначала ширину, постоянное хранение / деструктивное

Это требует только O(1) пространство, как вы использовали узлы дерева.

O(1)

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

Очередь (для BST) может занимать место в O(2^(log(n) -1)),

Другие вопросы по тегам