Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
1 / 1 / 1
Регистрация: 24.03.2013
Сообщений: 178

Прямой обход дерева

24.11.2021, 17:46. Показов 3094. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть словарь, ключ - ид. узла, значение словаря - массив ид. детей у данного узла
Python
1
{313: [346, 349], 346: [350], 0: [313, 312], 312: [348]}
Получается такое n-арное дерево

Python
1
2
3
4
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2021, 17:46
Ответы с готовыми решениями:

Прямой левый обход
Надо сделать левый обход дерева, я сформировал из файла дату(отделил корень от остальных узлов) нужную для дальнейшего построение и обхода...

Печать на консоль бинарного дерева, обход в ширину
Добрый вечер! Сразу скажу, топик не для слабонерных. Выручайте уважаемые программисты. Встала задача передо мной написать печать на КОНСОЛЬ...

Прямой обход дерева
#define N 80 #include <iostream> using namespace std; struct der { char inf; int n; der *l, *r; };

1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,740
Записей в блоге: 14
25.11.2021, 09:17
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
t={313: [346, 349], 346: [350], 0: [313, 312], 312: [348]}
 
def traverse(tree,curr,level,res=[]):
    res.append({curr:level})
    klist=tree[curr]
    for v in klist:
        if tree.get(v) is None:
            res.append({v:level+1})
        else:    
            traverse(tree,v,level+1,res)
 
r=[]    
traverse(t,0,1,r)
print(r)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2021, 09:17
Помогаю со студенческими работами здесь

Прямой обход идеально-сбалансированного дерева
Не могу найти глупую ошибку в логике. По заданию нужно прямым обходом по идеальносбалансированному дереву пройтись и вывести. Вот...

Нерекурсивный прямой обход BST дерева
Дайте пожалуйста пример реализации НЕрекурсивного прямого обхода дерева

Прямой обход в глубину дерева (обобщенное программирование)
Здравствуйте! Нашел много реализаций по прямому обходу дерева и поиска в глубину, но ввиду малого опыта и знаний, не могу все это...

Реализовать прямой обход двоичного дерева поиска
Реализовать на языке C++ функции, создающие соответствующие варианту бинарные деревья из символьных файлов. В файлах могут быть только...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru