Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/42: Рейтинг темы: голосов - 42, средняя оценка - 4.81
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295

Обход произвольного дерева

10.06.2009, 22:43. Показов 8046. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
struct tree {
  char info;
  struct tree *left;
  struct tree *right;
};
так, вопрос глупый -меня просто сомнения берут. вот смотрите, если обход бинарного дерева в симметричном порядке у нас функция процедура такая делает:
C++
1
2
3
4
5
6
7
8
void inorder(struct tree *root)
{
  if(!root) return;
 
  inorder(root->left);
  if(root->info) printf("%c ", root->info);
  inorder(root->right);
}
а если дерево не бинарное,а 100-арное (т.е. у каждого элемента кроме листа не 2 а 100 потомков), то функция становиться такая??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void inorder(struct tree *root)
{
  if(!root) return;
 
  inorder(root->el_1);
  if(root->info) printf("%c ", root->info);
  inorder(root->el_2);
  if(root->info) printf("%c ", root->info);
  inorder(root->el_3);
 
 
 //и так до...
 
  if(root->info) printf("%c ", root->info);
  inorder(root->el_100);
}
получается так?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2009, 22:43
Ответы с готовыми решениями:

обход дерева
Здравствуйте! У меня вопрос: Есть класс: class D { vector <A*> count; }; ...

Обход дерева
Вот начал читать про деревья и способы их обхода (PreOrder, InOrder и PostOrder). С алгоритмами проблем нет, но видно, как бы это сказать...

обход дерева
struct SAcson { int l,c; // строка, столбец float x; // заряд bool e; // возбуждающий или тормозящий }; struct SSinapc { ...

8
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
10.06.2009, 22:49
Теоретически так.... только не надо сотню раз выводить информацию в текущем узле... а вообще все от организации дерева зависит.
0
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
10.06.2009, 22:50  [ТС]
FunDuck, то есть от организации? просто у меня фантаззии представить как это обойти 100 арное деревце не хватает=(
0
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
10.06.2009, 22:53
Ну например, каждый элемент имеет ссылку не на всех потомков, а только на одного, который имеет ссылку на одного брата...в свою очередь брат имеет ссылку на другого брата.. и т.д. т.е. обход уже будет выполняться не в глубину, а в ширину.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
10.06.2009, 22:53
Недвоичные деревья обычно представляют не так. В каждом узле хранится ссылка на левого сына и на правого брата. Ну и для быстрого обхода и для удобства - ссылка на родителя и левого брата
0
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
10.06.2009, 22:55  [ТС]
FunDuck, не, если с братьями - это же ДБ дерево...
хотя блин.... ну то есть если допустим дерево обычное, т.е. каждый узел может иметь только потмоков а не братьев, то функция верна?

в принципе по заданию сказанно что обход можно вести в любом порядке, я просто симетричный выбрал
0
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
10.06.2009, 22:59
Цитата Сообщение от Акелла Посмотреть сообщение
FunDuck, не, если с братьями - это же ДБ дерево...
хотя блин.... ну то есть если допустим дерево обычное, т.е. каждый узел может иметь только потмоков а не братьев, то функция верна?
В принципе, да.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
10.06.2009, 23:22
> т.е. каждый узел может иметь только потмоков а не братьев

Товарищи, по-моему вы путаете писюн с гусиной шеей.

Какждый узел действительно имеет только потомков. Но для удобства обхода реализуют это дело так, что хранят в узле не список потомков (которох может быть 100), а одну ссылку на левого сына, а к следующему сыну обращаются не напрямую, а как к брату левого сына. Техничеси такая структура проще поддерживается, чем хранение динамического списка сыновей.
0
0 / 0 / 0
Регистрация: 19.12.2020
Сообщений: 7
14.04.2021, 18:07
Алгоритм решения поставленной задачи на псевдокоде (javascript):
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/** узел дерева */
class Node {
    id;
    info;
    parent = null;
    children = [];
}
 
/** прямой обход произвольного дерева */
    preOrderGo(node) {
        if (node) {
            console.log(node.info);
            for (let i = 0; i < node.children.length; ++i) {
                preOrderGo(node.children[i]);
            }
        }
    }
 
}
 
// ...
preOrderGo(root);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2021, 18:07
Помогаю со студенческими работами здесь

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

Обход дерева)
Прога работает) но сказали, что нужно сделать отдельную функцию обхода дерева) можете помочь) или пример)) #include...

Обход бинарного дерева
Прошу Вас, помогите школьнику, незнающему деревья, завтра срочно надо сдать работу, я никак не могу реализовать... 1. В заданном...

Обход дерева в ширину
Доброго времени суток. Нужно обойти бинарное дерево в ширину: struct TreePart { string data; TreePart* left = NULL; TreePart*...

Обход дерева по образцу
Помогите осуществить обход дерева по образцу.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru