Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
TimoshkaXXX
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
#1

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

30.04.2009, 00:28. Просмотров 1067. Ответов 6
Метки нет (Все метки)

Товарищи!!!!!
подскажите пожалуйста как можно посчитать ширину дерева!!!?????
(под шириной дерева понимается максимальное количество елементов, находящихся на одном уровне)
очень надо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2009, 00:28
Ответы с готовыми решениями:

Обход дерева в ширину
имеется такой кусок программы. требуется обойти дерево в ширину. библиотека...

Обход дерева в ширину
Кто нибудь может скинуть мне программу обхода дерева в ширину?

Реализация обхода в ширину и глубину бинарного дерева
Как реализовать обход дерева (глубины три, т.е. трех уровневое) в глубину и...

Как можно совершить обход двоичного дерева нерекурсивно
Доброго времени суток. Хочу поинтересоваться: как можно совершить обход...

Как можно посчитать эту функцию?
Фото во вложении

6
yuroc
0 / 0 / 0
Регистрация: 13.04.2009
Сообщений: 3
08.05.2009, 20:56 #2
Циклом пробежатся по каждому элементу дерева и определить максимальный уровень разветвлений
0
Evg
Эксперт CАвтор FAQ
19277 / 7134 / 528
Регистрация: 30.03.2009
Сообщений: 19,973
Записей в блоге: 30
08.05.2009, 21:28 #3
Обходишь дерево. При заходе в первого ребёнка увеличиваешь счётчик. При возврате от ребёнка к родителю счётчик уменьшаешь. Такми образом счётчик будет означать уровень текущего узла
0
TimoshkaXXX
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
08.05.2009, 23:09  [ТС] #4
Цитата Сообщение от Evg Посмотреть сообщение
Обходишь дерево. При заходе в первого ребёнка увеличиваешь счётчик. При возврате от ребёнка к родителю счётчик уменьшаешь. Такми образом счётчик будет означать уровень текущего узла
ну да это вроде понятно, я и сам примерно также рассуждал.
проблема в том, как будут сохраняться значения счетчика, ведь обход дерева - это рекурсивная функция, и если в ее теле объявить этот счетчик, то на каждом шаге рекурсии будет создана новая переменная, которая будет уничтожена вместе с кадром стека для текущего шага рекурсии.
Или нужно сделать обход с помощью цикла, что для меня является достаточно нетривиальной задачей.

Если нетрудно приведите какой нибудь пример рабочего кода или подскажите как разрешить мою проблему!!
Заранее спасибо.
0
Evg
Эксперт CАвтор FAQ
19277 / 7134 / 528
Регистрация: 30.03.2009
Сообщений: 19,973
Записей в блоге: 30
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);
}
1
TimoshkaXXX
0 / 0 / 0
Регистрация: 15.04.2009
Сообщений: 49
08.05.2009, 23:29  [ТС] #6
Спасибо !!!! попробую так сделать!!
если возникнут проблемы, то я к вам обращусь!!!
0
Evg
Эксперт CАвтор FAQ
19277 / 7134 / 528
Регистрация: 30.03.2009
Сообщений: 19,973
Записей в блоге: 30
08.05.2009, 23:35 #7
Обращайся
0
08.05.2009, 23:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2009, 23:35

Алгоритмы поиска кратчайших путей в ширину и двунаправленный в ширину
Реализовать алгоритм поиска кратчайшего пути. Двунаправленный поиск в ширину. ...

Можно ли посчитать производную сложной функции?
Добрый день. Возникла такая проблема - посчитать производную сложной функции?...

Какой функцией можно посчитать количество данных слов в строке?
Несколько вопросов по строкам и char 1. Какой функцией можно посчитать кол-во...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru