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

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





New (P);

P ^. Key: = X;

P ^. Left: = nil;

P ^. Right: = nil;

end;


procedure InLeft (var P: PItem; X: TInfo);// додавання вузла зліва

var R: PItem;

begin

New (R);

R ^. Key: = X;

R ^. Left: = nil;

R ^. Right: = nil;

P ^. Left: = R;

end;


procedure InRight (var P: PItem; X: TInfo);// додати вузол праворуч

var R: PItem;

begin

New (R);

R ^. Key: = X;

R ^. Left: = nil;

R ^. Right: = nil;

P ^. Right: = R;

end;


procedure Tree_Add (P: PItem; X: TInfo);

var OK: Boolean;

begin

OK: = false;

while not OK do begin

if X> P ^. Key then// подивитися направо

if P ^. Right <> nil// правий сайт не nil

then P: = P ^. Right// обхід праворуч

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

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

OK: = true;

end

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

if P ^. Left <> nil// лівий сайт не nil

then P: = P ^. Left// обхід зліва

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

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

OK: = true

end;

end;// циклу while

end;


begin

if Root = nil

then IniTree (Root, Key)

else Tree_Add (Root, Key);

end;

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

procedure TTree.Del (Key: TInfo);


procedure Delete (var P: PItem; X: TInfo);

var Q: PItem;


procedure Del (var R: PItem);

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

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

begin

if R ^. Right <> nil then// обійти дерево праворуч

Del (R ^. Right)

else begin

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

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

В 

Q ^. Key: = R ^. Key;

Q: = R;

R: = R ^. Left;

end;

end;// Del


begin// Delete

if P <> nil then// шукати видаляється вузол

if X

Delete (P ^. Left, X)

else

if X> P ^. Key then

Delete (P ^. Right, X)// шукати в правому поддереве

else begin

// Вузол знайдений, треба його видалити

// Зберегти посилання на віддалений вузол

Q: = P;

if Q ^. Right = nil then

// Праворуч nil

// І посилання на вузол треба замінити посиланням на цього нащадка

P: = Q ^. Left

else

if Q ^. Left = nil then

// Ліворуч nil

// І посилання на вузол треба замінити посиланням на цього нащадка

P: = P ^. Right

else// вузол має двох нащадків

Del (Q ^. Left);

Dispose (Q);

end

else...


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





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

  • Реферат на тему: Creation of control system by a personnel how to begin with a zero
  • Реферат на тему: Несправний вузол телевізора &Горизонт& і його ремонт
  • Реферат на тему: Балканський вузол
  • Реферат на тему: Телекомукаційній вузол
  • Реферат на тему: Вузол підготовкі сировина