Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Структури даних: бінарне впорядковане незбалансоване дерево

Реферат Структури даних: бінарне впорядковане незбалансоване дерево





> # pragma hdrstop


typedef int TInfo;

typedef struct Item * PItem;

struct Item {

TInfo Key;

PItem Left, Right;

};

class TTree {

private:

PItem Root;

public:

TTree ();

void Add (TInfo Key);

void Del (TInfo Key);

void View ();

void Exist (TInfo Key);

~ TTree ();

};


// --------------------------------------------- ----------------

TTree :: TTree ()

{

Root = NULL;

}

// --------------------------------------------- ----------------

static void IniTree (PItem & P, TInfo X)// створення кореня дерева

{

P = new Item;

P-> Key = X;

P-> Left = NULL;

P-> Right = NULL;

}


static void Iendleft (PItem & P, TInfo X)// додавання вузла зліва

{

PItem R;


R = new Item;

R-> Key = X;

R-> Left = NULL;

R-> Right = NULL;

P-> Left = R;

}


static void InRight (PItem & P, TInfo X)// додати вузол праворуч

{

PItem R;


R = new Item;

R-> Key = X;

R-> Left = NULL;

R-> Right = NULL;

P-> Right = R;

}


static void Tree_Add (PItem P, TInfo X)

{

int OK;

OK = false;

while (! OK) {p> if (X> P-> Key)// подивитися направо

if (P-> Right! = NULL)// правий сайт не NULL

P = P-> Right;// обхід праворуч

else {//правий вузол - лист і треба додати до нього елемент

InRight (P, X);// і кінець

OK = true;

} p> else// подивитися ліворуч

if (P-> Left! = NULL)// лівий сайт не NULL

P = P-> Left;// обхід зліва

else {//лівий вузол-лист і треба додати до нього елемент

Iendleft (P, X);// і кінець

OK = true;

} p> }// Циклу while

}


void TTree :: Add (TInfo Key)


{

if (Root == NULL)

IniTree (Root, Key);

else Tree_Add (Root, Key);

}

// --------------------------------------------- ---------------- static void delete_ (PItem & P, TInfo X);


static void Del (PItem & R, PItem & Q)

// процедура видаляє вузол має двох нащадків, замінюючи його на самий правий

// вузол лівого піддерева

{

if (R-> Right! = NULL)// обійти дерево праворуч

Del (R-> Right, Q);

else {

// дійшли до самого правого вузла

// замінити цим вузлом видаляється

Q-> Key = R-> Key;

Q = R;

R = R-> Left;

} p>}// Del


static void delete_ (PItem & P, TInfo X)

{

PItem Q;

// Delete

if (P! = NULL)// Шукати видаляється вузол

if (X

Key)

delete_ (P-> Left, X);

else

if (X> P-> Key)

...


Назад | сторінка 5 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Несправний вузол телевізора &Горизонт& і його ремонт
  • Реферат на тему: Балканський вузол
  • Реферат на тему: Телекомукаційній вузол
  • Реферат на тему: Вузол підготовкі сировина
  • Реферат на тему: Вузол редуктора електромеханічного приводу