Найти - Пользователи
Полная версия: Алгоритм построения дерева заданной величины
Начало » Python для новичков » Алгоритм построения дерева заданной величины
1
SoT
Задаётся глубина дерева n. Для простоты пусть у дерева будет по 5 ответвлений от каждого уровня. Реализация дерева через вложенные списки. Назовём общий список levels. Пусть на первом уровне лежит общее слово, например “Имена”. От levels будет отходить 5 элементов, например 5 слов Маша, Вася, Петя, Ира, Коля. Т.е. levels=Маша, levels = Коля. На следующем уровне level будет 5 ответвлений, для которых Маша, Вася, Петя, Ира, Коля родители. Я могу написать алгоритм на заранее известное число уровней : один, два, три. Но Общий алгоритм на любое число уровней ( от двух до бесконечности теоретически ) мне пока никак не даётся. Подскажите как это возможно реализовать на python?
Singularity
SoT
покажите код.
Euler
Через рекурсию. Глубину надо явно или неявно передать в функцию, которая для каждой ветви вызовет себя снова, уменьшив значение глубины на единицу и так пока глубина не станет равной нулю.
SoT
А можно пример рекурсии для дерева? Реализация дерева - список списков, в котором первая цифра ( например level указывает на уровень дерева.
P.s. А через цикл while никак нельзя это реализовать? я подлня ломал мозги над этим
Euler
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 никак нельзя это реализовать? я подлня ломал мозги над этим
любой рекурсивный алгоритм можно реализовать итеративно, но только зачем?
SoT
Большое спасибо! попробую завтра приспособить под свои нужды
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB