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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2009, 14:32   #1
Swool
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 39
По умолчанию BST - Binary Search Tree

Поставьте плз комменты, чтоб это можно былоб защитить у препода)))

Код:
#include <iostream>
#include <string>
using namespace std;

// BST - Binary Search Tree
// http://en.wikipedia.org/wiki/Binary_search_tree

             
struct Chislo 
{
     int value;           
     int kordsus;         
     Chislo *left, *right;  
     Chislo( int uus ) 
          {value=uus;
           kordsus=0;
           left=0;
           right=0;      
           }    
     void insert( int v ) 
          {if(v==value)kordsus++;
           if(v<value&&left==NULL)
               {Chislo *ukaz;
               ukaz=new Chislo(v);
               left=ukaz;
               }
           if(v<value&&left)
                left->insert(v);
           
           if(v>value&&right==NULL)
               {Chislo *ukaz;
               ukaz=new Chislo(v);
               right=ukaz;
               }
           if(v>value&&right)
                right->insert(v);   
           }                        
          
          
     int search( int v )                
         {if(value==v)return kordsus;
          if(v<value&&left==NULL)return 0;
          if(v<value&&left)return(left->search(v));
          if(v>value&&right==NULL)return 0;
          if(v>value&&right)return(right->search(v)); 
         }
     
     
     void print() 
          {cout<<value<<" - "<<kordsus<<"raza"<<"  (vlevo ";
                          if (left)cout<<left->value;
                            else cout<<"-";
                          cout<<", vpravo";
                          if(right)cout<<right->value<<")"<<endl;
                            else cout<<"-)"<<endl;
           if (left)left->print();
           if (right)right->print();         
          }
	 
};


       
class BST {
     Chislo * root;    
  public: 
     BST() {root=NULL;       
     }
     void insert( int v )  
           {if(root==NULL)
                {Chislo *ukaz;
                 ukaz=new Chislo(v);        
                 root=ukaz;
                 ukaz->kordsus=1;
                 }
                 else root->insert(v);   
          }
          
          
     int search( int v ) 
         {return (root->search(v));   
         }
     
     
     void print() 
       {cout<<endl<<"Raspechatka versini:"<<endl<<root->value<<" - "<<root->kordsus<<"raza"
       <<"  (vlevo "<<root->left->value<<", vpravo"<<root->right->value<<")"<<endl;
        cout<<endl<<"Raspechatka levogo otvetvlenija:"<<endl;
           Chislo *ukaz=root->left;
           ukaz->print();
        cout<<endl<<"Raspechatka pravogo otvetvlenija:"<<endl;
           ukaz=root->right;
           ukaz->print();
       
          }  

};

int main()
{BST A;
 int ch;
 string yn;
   for(int i=0;i<20;i++)
            {ch=rand()%50;
            A.insert(ch);
            cout<<ch<<endl;
            }
   system("PAUSE");
   while(1){cout<<"Vvedite chislo i uznajete skolko raz ono vstrechalos v dereve"<<endl;
            cin>>ch;
            cout<<"eto chislo vstrechajetsa v dereve "<<A.search(ch)<<" raz"<<endl;
            cout<<"zelajete povtorit poisk (p), ili vivesti vsjo derevo (d)?...";
            cin>>yn;
            if(yn=="d")break;
            }
   A.print();


    system("PAUSE");
    return 0;
}

Последний раз редактировалось Swool; 15.10.2009 в 14:34.
Swool вне форума Ответить с цитированием
Старый 15.10.2009, 17:03   #2
Swool
Пользователь
 
Регистрация: 12.07.2008
Сообщений: 39
По умолчанию

Ап, пользуясь темой и чтоб не флудить:

Подскажите плз в личку книги по программированию контроллеров на С.
Swool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог tree на C# (вывод содержимого каталогов) LepihinMS Общие вопросы .NET 8 22.03.2019 15:51
Unit not found: 'System.pas' or binary equivalents (DCU,DPU) masterx13 Общие вопросы Delphi 15 25.12.2012 00:41
Search Ekатерина Общие вопросы C/C++ 2 24.04.2009 20:08
Удаление в tree Черничный Общие вопросы Delphi 2 24.05.2008 10:43
Локальные ПОИСКовики. The Copernic Desktop Search Virtson Софт 6 14.01.2007 10:48