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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2010, 16:29   #1
prostac
Пользователь
 
Регистрация: 23.11.2009
Сообщений: 17
По умолчанию сбалансированное дерево

Доброго времени суток!
написал программу построения идеально-сбалансированного дерева.
но вот загвоздка - надо сделать включение, исключение и поиск элементов в этом дереве.

Помогите кто чем может. Спасибо!!!!

Код:
#include <STDIO.H>
#include <STDLIB.H>
#include <CONIO.H>
#include <IOSTREAM.H>
  long a[50];
  int i=0;
struct node
{
  int Key;
  int Count;
  node *Left;
  node *Right;
};

class TREE
{
  private:
    node *duk; //Љ®аҐ*м ¤ҐаҐў*
  public:
    TREE() { duk = NULL; }
    node **GetDuk() { return &duk; }
    node *Tree (int, node **);
    void Vyvod (node **, int);
};

void main ()
{
  TREE A;
  int per=0;
  int q=0,t;
  int n;
  for (int j=0;j<50;j++)
   a[j]=0;
  cout<<"‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® ўҐаиЁ*- ";
  cin>>n;
  cout<<"\n";
  randomize;
  do
   {
    t=random(99);
    per=t/10;
    if (per!=0)
     {
      for (int j=0;j<=i;j++)
       if (t==a[j]) q=1;
       if (q!=1)
	{
	 a[i]=t;
	 i++;
	}
       q=0;
     }
   }
  while (i<n);
  for (j=0;j<n;j++)
   {
    cout<<" ";
    cout<<a[j];
   }
  i=-1;
  A.Tree (n,A.GetDuk());
  cout<<"\n\n\n";
  A.Vyvod (A.GetDuk(),0);
  getch();
  clrscr();
}

node *TREE::Tree (int n,node **p)
// Џ®бв஥*ЁҐ Ё¤Ґ*«м*® бЎ*«**бЁа®ў***®Ј® ¤ҐаҐў*
//           б n ўҐаиЁ**¬Ё
// *p - гЄ*§*⥫м ** Є®аҐ*м ¤ҐаҐў*
{
  node *now;
  int nl,nr,x;
  now = *p;
  if  (n==0) *p = NULL;
  else
  {
    nl = n/2; nr = n - nl - 1;
    i++;
    x=a[i];
    now = new(node);
    (*now).Key = x;
    Tree (nl,&((*now).Left));
    Tree (nr,&((*now).Right));
    *p = now;
  }
}

void TREE::Vyvod (node **w,int l)
// Ё§®Ўа*¦Ґ*ЁҐ ЎЁ**а*®Ј® ¤ҐаҐў*, §*¤***®Ј®
// гЄ*§*⥫Ґ¬ *w ** нЄа**Ґ ¤ЁбЇ«Ґп
{
  if  (*w!=NULL)
  {
    Vyvod (&((**w).Right),l+1);
    for  (int i=1; i<=l; i++) cout<<"   ";
    cout<<(**w).Key<<endl;
    Vyvod (&((**w).Left),l+1);
  }
}
prostac вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дерево Ikram Помощь студентам 0 05.05.2010 19:42
дерево С# Natok Помощь студентам 0 14.09.2009 23:42
Идеально сбалансированное дерево Осипович Общие вопросы Delphi 0 16.05.2009 15:54
Дерево Rifler Паскаль, Turbo Pascal, PascalABC.NET 1 06.05.2008 08:42
Дерево Yoger БД в Delphi 3 25.01.2007 01:24