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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2014, 16:38   #1
andrew_ryaba
Пользователь
 
Регистрация: 29.12.2013
Сообщений: 21
По умолчанию Delphi. Сортировка бинарного дерева

Помогите, пожалуйста, с задачей.
Создать сбалансированное бинарное дерево. Разработать процедуру сортировки пузырьком элементов дерева.
Создание и вывод дерева:
Код:
type
u=^uzl;
uzl=record
i:integer;
l,r:u;
end;
var h:u; n:integer;

procedure ShowTree(h:u; x,y,w,f:integer);
const a=5;
var s:string;
begin
  if h<>nil then begin
  ShowTree(h^.l, x-w div 4, y+4*a, w div 2, 1);
  with form1.Canvas do begin
    brush.Color:=clblack;
    if f<>0 then
    begin
     moveto(x,y);
     lineto(x+f*(w div 2), y-4*a);
    end;
    ellipse(x-a,y+a,x+a,y-a);
    str(h^.i,s);
    brush.style:=bsClear;
    font.Name:='tahoma';
    font.Size:=10;
    textout(x,y,s);
  end;
  showtree(h^.r, x+w div 4, y+4*a, w div 2, -1);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
function tree(k:integer):u;
var t:u;
begin
  if (k=0) then begin
  tree:=nil; exit; end;
  new(t);
  t^.i:=random(100);
  t^.l:=tree(k div 2);
  t^.r:=tree(k-(k div 2)-1);
  tree:=t;
end;
begin
n:=StrToInt(LabeledEdit1.Text);
h:=tree(n);
ShowTree(h,320,50,460,0);
end;
В этом случае нельзя как-нибудь приспособить алгоритм сортировки "пузырьком" односвязного списка?
Вот такой:
Код:
type uk=^rec;
rec=record
x:integer;
adr:uk;
end;
var first,p1,p2:uk;
pris:boolean;
buf:integer;
begin
repeat
  p1:=first;
  pris:=true;
  while p1^.adr<>nil do begin
     if p1^.x>p1^.adr^.x then begin
     buf:=p1^.x; p1^.x:=p1^.adr^.x; p1^.adr^.x:=buf; pris:=false;
     end;
  p1:=p1^.adr;
  end;
until pris;
andrew_ryaba вне форума Ответить с цитированием
Старый 28.10.2014, 19:41   #2
andrew_ryaba
Пользователь
 
Регистрация: 29.12.2013
Сообщений: 21
По умолчанию

Если я уже повторяюсь, то скиньте ссылку на тему, где это уже обсуждалось...
andrew_ryaba вне форума Ответить с цитированием
Старый 08.11.2014, 22:53   #3
andrew_ryaba
Пользователь
 
Регистрация: 29.12.2013
Сообщений: 21
По умолчанию

Хорошо, попробую переформулировать вопрос.
Как можно изменить классический, давно всем известный алгоритм сортировки пузырьком так, чтобы он сортировал элементы сбалансированного бинарного дерева? Подскажите, пожалуйста.
andrew_ryaba вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод бинарного дерева Sv. Общие вопросы C/C++ 0 19.05.2013 11:55
Обход бинарного дерева в ширину. Delphi 7. ZhooZhik Помощь студентам 4 01.12.2011 02:48
Обход бинарного дерева CodeNOT Общие вопросы C/C++ 3 20.05.2011 07:55
Составление бинарного дерева [MI_nor] Общие вопросы C/C++ 1 08.05.2009 00:28