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

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

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

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

Обход Бинарного дерева
Задача: написать функцию, помощью которой можно получить n-тый элемент...

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

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

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

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

5
likehood
981 / 826 / 395
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 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
150 / 91 / 31
Регистрация: 01.06.2015
Сообщений: 346
Записей в блоге: 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
981 / 826 / 395
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 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

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

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

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


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

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

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