Форум сайта python.su
Задаётся глубина дерева n. Для простоты пусть у дерева будет по 5 ответвлений от каждого уровня. Реализация дерева через вложенные списки. Назовём общий список levels. Пусть на первом уровне лежит общее слово, например “Имена”. От levels будет отходить 5 элементов, например 5 слов Маша, Вася, Петя, Ира, Коля. Т.е. levels=Маша, levels = Коля. На следующем уровне level будет 5 ответвлений, для которых Маша, Вася, Петя, Ира, Коля родители. Я могу написать алгоритм на заранее известное число уровней : один, два, три. Но Общий алгоритм на любое число уровней ( от двух до бесконечности теоретически ) мне пока никак не даётся. Подскажите как это возможно реализовать на python?
Офлайн
SoT
покажите код.
Офлайн
Через рекурсию. Глубину надо явно или неявно передать в функцию, которая для каждой ветви вызовет себя снова, уменьшив значение глубины на единицу и так пока глубина не станет равной нулю.
Офлайн
А можно пример рекурсии для дерева? Реализация дерева - список списков, в котором первая цифра ( например level указывает на уровень дерева.
P.s. А через цикл while никак нельзя это реализовать? я подлня ломал мозги над этим
Офлайн
SoTеслия я правильно понял:
А можно пример рекурсии для дерева? Реализация дерева - список списков, в котором первая цифра ( например level указывает на уровень дерева
def BuildTree(Depth, BranchesCount, level = 0): if Depth>1: return [level]+[BuildTree(Depth-1, BranchesCount, level+1) for x in range(BranchesCount)] return [level]+['Node'+str(x) for x in range(BranchesCount)] print(BuildTree(3, 3))
SoTлюбой рекурсивный алгоритм можно реализовать итеративно, но только зачем?
P.s. А через цикл while никак нельзя это реализовать? я подлня ломал мозги над этим
Офлайн
Большое спасибо! попробую завтра приспособить под свои нужды
Офлайн