@ikanaide
студент-математик

Как построить бинарное дерево с помощью списка смежности?

Всем привет, суть вопроса такова : Дан неориентированный граф в виде списка смежности , нужно проверить является ли этот граф деревом , если да , то вернуть бинарное дерево построенное с помощью этого списка. Вопрос с проверкой( является ли граф деревом) решен , но не понятно каким образом теперь можно построить из списка смежности это дерево.
  • Вопрос задан
  • 454 просмотра
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Обходом естественно.
Ответ написан
SerJook
@SerJook
кодер
Я так понимаю, на входе у вас массив, содержащий списки соседей(индексы) для каждой вершины графа.

Берите любую вершину, у которой кол-во соседей меньше либо равно двум, и назначаете ее корнем.
Для любой вершины корнем левого поддерева будет первый сосед в списке (если есть), который не совпадает с родительским. Рекурсивно строите левое поддерево.
Корнем правого поддерева будет второй сосед в списке (если есть), который не совпадает с родительским.
Рекурсивно строите правое поддерево.

В итоге получите несортированное несбалансированное бинарное дерево
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы