Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обход деревьев, Обход в прямом и обратном порядке 
V
    Опции темы
1122
  Дата 26.4.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 24.10.2007

Репутация: -1
Всего: нет



Здравствуйте.
Подскажие пожалуйста, как обойти бинарное дерево поиска в прямом и обратном порядке.
Вот пример функции в симметричном порядке:

Код

void sim_tree(node *p)
{
  if(p->left)
  sim_tree(p->left);
  cout << p->info << " ";
  if(p-> right)
  sim_tree(p->right);
}


А как будет выглядить обход в прямом и обратном?
Алгоритм я знаю, а запрограммировать не могу :(

Для обхода непустого бинарного дерева требуется выполнить следующие действия: 

1. В прямом порядке (сверху вниз или просмотр в глубину):
 попасть в корень;
 пройти в прямом порядке левое поддерево;
 пройти в прямом порядке правое поддерево.

2. В обратном порядке (снизу вверх):
 пройти в обратном порядке левое поддерево;
 пройти в обратном порядке правое поддерево;
 попасть в корень.

Заранее примного благодарен!
PM MAIL   Вверх
creatorcode
Дата 26.4.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.6.2006
Где: Ленинград

Репутация: 1
Всего: 4



В прямом порядке:
Код

void f1(node* p)
{
  cout << p->info << " ";
  if(p->left)
    f1(p->left);
  if(p-> right)
    f1(p->right);
}

В обратном порядке:
Код

void f2(node* p)
{
  if(p->left)
    f2(p->left);
  if(p-> right)
    f2(p->right);
  cout << p->info << " ";
}

PM MAIL   Вверх
1122
Дата 26.4.2008, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 24.10.2007

Репутация: -1
Всего: нет



Ууууу... спасибо!!!)))
 ! 
archimed7592
Не забываем пользоваться кнопкой "вопрос решён" или соответствующей галочкой в форме ответа.


Это сообщение отредактировал(а) archimed7592 - 28.4.2008, 11:58
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.