Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 23, 2013 17:09:00

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Алгоритм построения дерева заданной величины

Задаётся глубина дерева n. Для простоты пусть у дерева будет по 5 ответвлений от каждого уровня. Реализация дерева через вложенные списки. Назовём общий список levels. Пусть на первом уровне лежит общее слово, например “Имена”. От levels будет отходить 5 элементов, например 5 слов Маша, Вася, Петя, Ира, Коля. Т.е. levels=Маша, levels = Коля. На следующем уровне level будет 5 ответвлений, для которых Маша, Вася, Петя, Ира, Коля родители. Я могу написать алгоритм на заранее известное число уровней : один, два, три. Но Общий алгоритм на любое число уровней ( от двух до бесконечности теоретически ) мне пока никак не даётся. Подскажите как это возможно реализовать на python?

Офлайн

#2 Сен. 23, 2013 17:16:38

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Алгоритм построения дерева заданной величины

SoT
покажите код.

Офлайн

#3 Сен. 23, 2013 20:17:08

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Алгоритм построения дерева заданной величины

Через рекурсию. Глубину надо явно или неявно передать в функцию, которая для каждой ветви вызовет себя снова, уменьшив значение глубины на единицу и так пока глубина не станет равной нулю.

Офлайн

#4 Сен. 23, 2013 22:42:38

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Алгоритм построения дерева заданной величины

А можно пример рекурсии для дерева? Реализация дерева - список списков, в котором первая цифра ( например level указывает на уровень дерева.
P.s. А через цикл while никак нельзя это реализовать? я подлня ломал мозги над этим

Офлайн

#5 Сен. 24, 2013 02:20:21

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Алгоритм построения дерева заданной величины

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 никак нельзя это реализовать? я подлня ломал мозги над этим
любой рекурсивный алгоритм можно реализовать итеративно, но только зачем?

Офлайн

#6 Сен. 24, 2013 21:59:27

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Алгоритм построения дерева заданной величины

Большое спасибо! попробую завтра приспособить под свои нужды

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version