![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 27.04.2009
Сообщений: 65
|
![]()
Как удалять элементы с Б дерева?
![]() |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 13.05.2010
Сообщений: 42
|
![]()
насколько я знаю удаления узла с заданным значением происходит в 3 варинтах.
вот моя процедурка вроде норм работает!(PASCAL) procedure delete_key(var p:svd; x:integer); var q:svd; procedure Del(var r:svd); begin if (r^.right<>nil) then Del(r^.right) else begin q^.key:=r^.key; q:=r; r:=r^.left; dispose(q); end; end;{конец del} Begin{поиск узла для удаления и выбор варианта его удаления} if p=nil then writeln('net elementa s zadanbIm klyuchom') else if (x<p^.key) then delete_key(p^.left,x) else if (x>p^.key) then delete_key(p^.right,x) else{узел найден выбир вариант} begin{2 вар} q:=p;{q-указатель на удал звено} if (q^.right=nil) then begin p:=q^.left; dispose(q); end else if (q^.left=nil) then begin p:=q^.right; dispose(q); end else Del(p^.right);{вариант 3} end; end; |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Деревья на С++ | osichev | Помощь студентам | 0 | 11.12.2009 21:51 |
Б деревья | F_A_N_Alex | Помощь студентам | 1 | 06.10.2009 23:05 |
Деревья | Chudo4258 | Помощь студентам | 3 | 29.04.2009 14:46 |
Деревья | Mitron | Общие вопросы Delphi | 5 | 01.02.2008 10:09 |
Деревья | Зёка_студент | Помощь студентам | 1 | 26.12.2007 21:47 |