IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Как можно освободить место занимаемое деревом, Динамич. структуры данных
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 68
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


[b]Добавлено через 11 мин.
lol.gif ПРОСТИТЕ)) ПОКА РЕДАКТИРОВАЛ ТЕМУ ЗАМЕТИЛ СВОЮ ОШИБКУ lol.gif

ТЕПЕРЬ РАБОТАЕТ.
Может кому то пригодиться процедура deleteTree5 которая удаляет узел с ключем равным параметру fio.[/b]


Я создал дерево процедурами создание первого узла и добавления нового узла. Каждый узел может иметь максимум два поддерева. Процедуру удаления ветви одноя я нашел реализованную:

Код
type name=string[20];

     TNodeTree=^Node;
     Node=record
         FIO:name;
         Date:TDateTime;
         Status:name;
         Left,
         Right: TNodeTree;
     end;






Код
procedure deleteTree5( var q: TNodeTree;x:name);
var      p: TNodeTree;
  procedure del(var c: TNodeTree);
   begin
       if c^.right <> nil then del(c^.right)
       else    begin
        p^.FIO:=c^.FIO;
        p:=c;
c:=c^.left;
            end;
   end;
  begin    {delete}
   if  q = nil then {writeln(" sym is not in tree") }
   else if x < q^.fio  then deleteTree5( q^.left,x)
        else  if x > q^.fio then deleteTree5( q^.right,x)
              else  begin
                    p:=q;
                    if p^.right = nil then q:=p^.left
                    else if p^.left = nil then q:=p^.right
                          else del(p^.left);
                    dispose(p);
                    end
   end;



Она работает)

Я поместил ее в цыкл пока не удалены все узлы:

Код
while root<>nil do DeleteTree5(root, root.fio);

Но программа виснет если дерево содержит больше чем один узыл (


Сообщение отредактировано: Scorp_Freeman -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.11.2020 14:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name