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

Обход бинарного дерева С++ - C++

15.06.2017, 14:12. Просмотров 296. Ответов 5
Метки нет (Все метки)

Нужна помощь! Просмотрел много источников, но так и не нашёл своего ответа...Суть задачи состоит в том что, мне нужно при обходе дерева(любым способом) отлавливать елементы НЕ являющимися листьями и запихать их в массив. Столько перепробовал, но так и не смог. Помогите кому не впадлу. Сессию здать не могу)
http://www.cyberforum.ru/cpp-beginners/thread1789656.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2017, 14:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Обход бинарного дерева С++ (C++):

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

Обход бинарного дерева
может есть у кого такой пример или похожий??или часть какая нибудь?

НЕрекурсивный обход бинарного дерева
уважаемые программисты! нужно написать алгоритм обхода бинарного дерева без...

Как осуществлять обход бинарного дерева?
Хочу создать клас бинарное дерево, но не знаю чем это дерево я буду проходить,...

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

5
likehood
930 / 789 / 378
Регистрация: 25.12.2016
Сообщений: 2,627
Завершенные тесты: 3
15.06.2017, 17:06 #2
Цитата Сообщение от Foollox33 Посмотреть сообщение
Столько перепробовал, но так и не смог
Покажите один из опробованных вариантов и объясните что именно не получилось.
1
Foollox33
0 / 0 / 0
Регистрация: 11.04.2017
Сообщений: 4
15.06.2017, 18:11  [ТС] #3
Код
void print (node * root, short x, short y, short a, char c, int* qe)
//...бла бла бла 
if(root->left==0||root->right==0||root->left!=0 && root->right!=0){
      qe[k]=root->data;
      k++;}
//(Без этого кусочка кода всё работает)
Мне нужно "отловить предков" и запихать их в массив, где я смогу уже дальше с ними работать.
Проблема только в этом кусочке кода.
Здесь я проверяю:
1: Есть ли у узла левый потомок;
2: Есть ли у узла правый потомок;
3: Или проверка на 2-ух потомков сразу.
Под словами "бла бла бла" я подразумеваю использование всех остальных аргументов функции кроме последнего, ссылки на массив.
0
ixoyz
126 / 69 / 22
Регистрация: 01.06.2015
Сообщений: 290
Записей в блоге: 1
Завершенные тесты: 1
15.06.2017, 18:27 #4
Цитата Сообщение от Foollox33 Посмотреть сообщение
root->left==0||root->right==0||root->left!=0 && root->right!=0
А вы таблицу истинности прибывали строить? У вас условие всегда истина
1
Foollox33
0 / 0 / 0
Регистрация: 11.04.2017
Сообщений: 4
15.06.2017, 18:32  [ТС] #5
Я уже разобрался!)))
Код
if(root->left==0 && root->right!=0 || root->right==0 && root->left!=0 || root->left!=0 && root->right!=0)
Проверка на предков.


Только человек захотевший этого сможет сделать это!


Тема закрыта
0
likehood
930 / 789 / 378
Регистрация: 25.12.2016
Сообщений: 2,627
Завершенные тесты: 3
15.06.2017, 19:24 #6
Лучший ответ Сообщение было отмечено Foollox33 как решение

Решение

Зачем так сложно?

Достаточно просто
C++
1
if (root->left != 0 || root->right != 0)
1
15.06.2017, 19:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2017, 19:24
Привет! Вот еще темы с решениями:

Бинарное дерево. Обход бинарного дерева (симметрический, прямой и обратный)
Привет всем! Мне надо в курсовой работе написать программу, которая строит...

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

"Рекурсивная функция" (Обход бинарного дерева)
Привет всем, встретился с такой рекурсивной ф-ей, которая обходит бинарное...

Запись бинарного дерева в файл и восстановление из него этого дерева
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя...


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

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

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