Как узнать количество узлов на заданной высоте в дереве двоичного поиска? - PullRequest
0 голосов
/ 04 ноября 2018

Если у нас есть двоичное дерево поиска, и мы должны найти количество узлов на высоте пользовательского ввода? В качестве пользователя введите

h = 3

каково будет количество узлов для этой высоты?

1 Ответ

0 голосов
/ 27 ноября 2018

Если вы отслеживаете строку с каждым узлом, вы можете запустить BFS и остановиться на строке h. Корень будет иметь h = 1, а каждый его потомок будет иметь h = 2 и так далее. Поэтому, когда вы обнаруживаете узлы с правильным значением строки, вы можете перестать посещать их и просто считать их.

Вот оно в псевдокоде:

count = 0
ENDROW - введенный пользователем номер строки
Установите значение rownum для root на 1 (или 0, если это зависит от того, как вы индексируете)
Поместить корень в очередь обнаруженных вершин
Пока в очереди еще есть элементы:
вытолкнуть первую вершину (v)
если v's rownum = ENDROW - 1:
количество + = количество детей
еще:
за каждого ребенка:
установите rownum в v's rownum + 1
добавить в очередь обнаруженных вершин

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