|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.08.2015, 14:06 | #1 |
Пользователь
Регистрация: 30.11.2014
Сообщений: 65
|
Подсчёт количества вершин у двоичного дерева
Подскажите, пожалуйста! Как можно осуществить и как ответ оформить?2) Посчитать разность для каждой вершины полученного дерева между количеством левых и правых поддеревьев. .Что на выходе должно быть?(ведь может быть огромное количество вершин в дереве). У меня была такая задача:1) Построить двоичное дерево сортировки. - вроде её получилось сделать( не знаю на сколько правильно, но вроде работает) И относительно её хотелось бы вторую сделать. Так можно наверное?
Код:
|
28.08.2015, 15:44 | #2 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
уговорили, отвечу я, коль остальные молчат :-D
Оформить ответ я не знаю как, но реализовал бы два варианта: вывод для каждой вершины и вывод только для корневого узла.... а там уже пусть препод выбирает, благо что почти тот же код и можно тупо скопировать код одного варианта и допилить до второго) Про реализацию: фактически, за основу бери код obhod-a.... новая ф-ия должна возвращать количество вершин указанного узла т. е. если вызвали для корня - вернёт общее число узлов дерева, если вызвали для левого/правого узла - вернёт общее число узлов левого/правого поддерева, если вызвали на nil - вернёт 0.... думаю, что сможешь реализовать, там та же рекурсия, что и в obhod) Главное отличие при выводе ответа: если мы считаем только разность левого и правого узла корня, то всё как выше написал, без особых заморочек..... если вывод для каждого узла, то просто в нашей новой функции сохраняем к-во узлов лево/право, выводим разницу, а потом просто возвращаем сумму лево/право..... отличие лишь в наличие вывода, а так-то тот же код |
28.08.2015, 17:46 | #3 |
Пользователь
Регистрация: 30.11.2014
Сообщений: 65
|
GreenWizard, спасибо за объяснения! Буду пробовать реализовать.
|
28.08.2015, 18:33 | #4 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
|
29.08.2015, 18:40 | #5 |
Пользователь
Регистрация: 30.11.2014
Сообщений: 65
|
Только сейчас что-то получилось, но это не совсем то.. Помогите, если может кто. Пожалуйста!
Код:
|
29.08.2015, 18:55 | #6 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
1) случайные т. к. нужно не полагаться на компилятор, а в начале работы присвоить им 0
2) особого порядка нет.... это.похоже на организацию некой фирмы: есть глава и от 0 до 2 замов, а у них от 0 до 2 помошников.... нужно просто посчитать количество подчинённых у узла/человека 3) умница, конечно, что сделала на глобальных переменных, но перепиши на одну функцию... будет намного проще и меньше кода |
29.08.2015, 19:14 | #7 |
Пользователь
Регистрация: 30.11.2014
Сообщений: 65
|
Всё понятно! Да, я переделаю - в одну функцию. Огромное спасибо!
|
29.08.2015, 19:24 | #8 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
Код:
Код:
|
29.08.2015, 20:24 | #9 |
Пользователь
Регистрация: 30.11.2014
Сообщений: 65
|
Уже всё переделано как нужно - спасибо Вам!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обход прошитого двоичного дерева | iluxa1810 | Общие вопросы C/C++ | 1 | 13.05.2015 20:42 |
Подсчет количества вершин на каждом уровне дерева | Sauber | C++ Builder | 1 | 25.11.2011 08:15 |
Поиск двоичного дерева | mtg | Общие вопросы C/C++ | 2 | 01.12.2010 21:15 |
Обход двоичного дерева слева | Дядя Тёма | Помощь студентам | 0 | 05.06.2010 18:25 |
Обход двоичного дерева | F1nk | Помощь студентам | 0 | 03.06.2010 17:51 |