Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 01:39   #1
rockfun
 
Регистрация: 27.11.2012
Сообщений: 3
По умолчанию Бинарное дерево, проблема с функцией поиска

Помогите,пожалуйста, разобраться!
не могу исправить ошибку в функции поиска.
Цитата:
#include<iostream>
using namespace std;
struct Node
{
int data;
Node *left;
Node *right;

};

Node *CreateNode ()
{
Node *newNode; //1
newNode = new Node; //2
cout<<"\nEnter a number to add to: ";
cin>>newNode->data; //3
newNode->left=NULL;
newNode->right=NULL; //4
return newNode; //5
}
/////////////////////////////////////////////
Node *FindNode (Node *cur, int x)
{
if (!cur) return NULL;
if (cur->data==x) return cur;
else {
if (cur->left!=NULL) FindNode(cur->left,x);

if (cur->right!=NULL) FindNode(cur->right,x);

}
}


///////////////////////////////////////////
int main (int argc,char *argv[])
{
Node *cur, *newNode;

int menu=0;
int x;
Node *root=NULL;
do
{
cout<<"\nChooseFunction!\n";
cout<<"\n1. CreateRoot\n";
cout<<"\n2. PrintTree\n";
cout<<"\n3. FindNode\n";
cout<<"\n4. LeftNode\n";
cout<<"\n5. RightNode\n";
cout<<"0. Exit\n";
cout<<"\nYourChoise: ";
cin>>izv;

switch(menu)
{ case 1: if (!root) { cout<<"Root ";
root=CreateNode();}
else cout<<"Root already is!!!";
break;
case 2: PrintTree (root); break;
case 3: if (root)
{cout<<"What search: ";
cin>>x;
cur=FindNode(root,x);
if (cur) cout<<"Is "<<x; else cout<<"Isn't "<<x;
}
else cout<<"List is empty!!!"; break;

Последний раз редактировалось rockfun; 27.11.2012 в 01:58.
rockfun вне форума Ответить с цитированием
Старый 27.11.2012, 10:26   #2
Blind Guard
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 139
По умолчанию

В дальнейшем берите код в спец. теги для удобства восприятия.
В чём проблема в вашем коде не знаю, но облегчу понимание другим
Код:
#include<iostream>
 using namespace std;

 struct Node
 {
 int data;
 Node *left;
 Node *right;
 };

 Node *CreateNode ()
 {
 Node *newNode; //1
 newNode = new Node; //2
 cout<<"\nEnter a number to add to: ";
 cin>>newNode->data; //3
 newNode->left=NULL;
 newNode->right=NULL; //4
 return newNode; //5
 }
 
 Node *FindNode (Node *cur, int x)
 {
 if (!cur) return NULL;
 if (cur->data==x) return cur;
 else
  {
   if (cur->left!=NULL) FindNode(cur->left,x);
   if (cur->right!=NULL) FindNode(cur->right,x);
  }
 }

 int main (int argc,char *argv[])
 {
 Node *cur, *newNode;
 int menu=0;
 int x;
 Node *root=NULL;
 do
 { 
 cout<<"\nChooseFunction!\n";
 cout<<"\n1. CreateRoot\n";
 cout<<"\n2. PrintTree\n";
 cout<<"\n3. FindNode\n";
 cout<<"\n4. LeftNode\n";
 cout<<"\n5. RightNode\n";
 cout<<"0. Exit\n";
 cout<<"\nYourChoise: ";
 cin>>izv;
 switch(menu)
 { case 1: if (!root) { cout<<"Root "; 
 root=CreateNode();} 
 else cout<<"Root already is!!!";
 break; 
 case 2: PrintTree (root); break;
 case 3: if (root)
 {cout<<"What search: ";
 cin>>x;
 cur=FindNode(root,x);
 if (cur) cout<<"Is "<<x; else cout<<"Isn't "<<x;
 }
 else cout<<"List is empty!!!"; break;
Blind Guard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарное дерево newslayer Общие вопросы C/C++ 0 30.05.2012 11:59
Бинарное дерево поиска С++ vadiprog Помощь студентам 1 06.05.2012 21:47
Бинарное дерево поиска Orli Общие вопросы C/C++ 1 15.12.2011 21:27
Бинарное дерево(проблема с выводом) ThisIzGame Общие вопросы C/C++ 1 04.05.2010 13:25