Форум программистов, компьютерный форум CyberForum.ru

Как можно посчитать ширину дерева? - C++

Войти
Регистрация
Восстановить пароль
 
TimoshkaXXX
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
30.04.2009, 00:28     Как можно посчитать ширину дерева? #1
Товарищи!!!!!
подскажите пожалуйста как можно посчитать ширину дерева!!!?????
(под шириной дерева понимается максимальное количество елементов, находящихся на одном уровне)
очень надо!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2009, 00:28     Как можно посчитать ширину дерева?
Посмотрите здесь:

C++ Какой функцией можно посчитать количество данных слов в строке?
Как осуществлять обход бинарного дерева? C++
C++ Как установить ширину выпадающей части ComboBox?
Как в консоли поменять ширину экрана программно? C++
Как можно сделать что бы в консольном окне можно было вызвать контекстное меню как в win cmd? C++
Как удалить корень дерева? C++
C++ Обход дерева в ширину
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yuroc
0 / 0 / 0
Регистрация: 13.04.2009
Сообщений: 3
08.05.2009, 20:56     Как можно посчитать ширину дерева? #2
Циклом пробежатся по каждому элементу дерева и определить максимальный уровень разветвлений
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
08.05.2009, 21:28     Как можно посчитать ширину дерева? #3
Обходишь дерево. При заходе в первого ребёнка увеличиваешь счётчик. При возврате от ребёнка к родителю счётчик уменьшаешь. Такми образом счётчик будет означать уровень текущего узла
TimoshkaXXX
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
08.05.2009, 23:09  [ТС]     Как можно посчитать ширину дерева? #4
Цитата Сообщение от Evg Посмотреть сообщение
Обходишь дерево. При заходе в первого ребёнка увеличиваешь счётчик. При возврате от ребёнка к родителю счётчик уменьшаешь. Такми образом счётчик будет означать уровень текущего узла
ну да это вроде понятно, я и сам примерно также рассуждал.
проблема в том, как будут сохраняться значения счетчика, ведь обход дерева - это рекурсивная функция, и если в ее теле объявить этот счетчик, то на каждом шаге рекурсии будет создана новая переменная, которая будет уничтожена вместе с кадром стека для текущего шага рекурсии.
Или нужно сделать обход с помощью цикла, что для меня является достаточно нетривиальной задачей.

Если нетрудно приведите какой нибудь пример рабочего кода или подскажите как разрешить мою проблему!!
Заранее спасибо.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
08.05.2009, 23:16     Как можно посчитать ширину дерева? #5
Номер уровня надо передавать праметром

Ну схематично

C
1
2
3
4
5
6
7
8
void PassNode (Node* node, int level)
{
  Node *son;
 
  son = ....
 
  PassNode (son, level + 1);
}
TimoshkaXXX
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
08.05.2009, 23:29  [ТС]     Как можно посчитать ширину дерева? #6
Спасибо !!!! попробую так сделать!!
если возникнут проблемы, то я к вам обращусь!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2009, 23:35     Как можно посчитать ширину дерева?
Еще ссылки по теме:

C++ нужно посчитать, сколько можно провести прямых, которые не будут параллельны другим прямым уже находящимся на коорд. плоскости.
C++ Как можно совершить обход двоичного дерева нерекурсивно
C++ Можно ли посчитать производную сложной функции?
C++ Алгоритмы поиска кратчайших путей в ширину и двунаправленный в ширину
Как увеличить ширину (разрядность) оператора >> ? C++

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16942 / 5347 / 329
Регистрация: 30.03.2009
Сообщений: 14,377
Записей в блоге: 26
08.05.2009, 23:35     Как можно посчитать ширину дерева? #7
Обращайся
Yandex
Объявления
08.05.2009, 23:35     Как можно посчитать ширину дерева?
Ответ Создать тему
Опции темы

Текущее время: 21:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru