Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / прямой обход дерева / 3 сообщений из 3, страница 1 из 1
24.11.2021, 17:56
    #40114635
polin11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прямой обход дерева
Есть словарь, ключ - ид. узла, значение словаря - массив ид. детей у данного узла
Код: python
1.
{313: [346, 349], 346: [350], 0: [313, 312], 312: [348]}


Получается такое n-арное дерево

Код: python
1.
2.
3.
4.
5.
level 1                    0
level 2           313            312 
level 3     346        349             348     
level 4   350  
  


Нужно сделать прямой обход такого дерева, получить массив словарей, где ключ словаря это ид. узла,
а значение словаря уровень иерархии.

Такой результат:
Код: python
1.
    [{0:1}, {313:2}, {346:3}, {349:3}, {312:2}, {348:3}]



Стал заморачиваться, писать классы для реализации дерева и его обхода, но запутался.
Может кто знает более простой алгоритм для реализации, либо библиотеку питона, которую можно использовать
...
Рейтинг: 0 / 0
26.11.2021, 00:40
    #40115062
iot
iot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прямой обход дерева
polin11,

есть хорошая либа treelib

здесь ваш пример
...
Рейтинг: 0 / 0
27.11.2021, 06:48
    #40115422
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прямой обход дерева
Проще всего получится на яваскрипт. Потому, что Вы написали именно жсон.
А у объекта в жаваскрипт есть длина, есть элемент, у которого паренты имеются.
Посчитайте эти паренты - и все. Это можно сделать на любом языке, который поддерживает яваскрипт.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / прямой обход дерева / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]