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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2014, 19:33   #1
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию дерево

Задание:
Организовать восходящий и нисходящий обход.
Выполнить операцию поиска в каждом методе и сравнить их эффективность.Помогите разобраться в восходящем и нисходящем обходе дерева, вот код,и как сделать "операцию поиска в каждом методе и сравнить их эффективность",помогите пожалуйста, на счет восходящего обхода есть неуверенность в правильности кода:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Button2: TButton;
    Edit1: TEdit;
    Label2: TLabel;
    Button1: TButton;
    Label1: TLabel;
    Button3: TButton;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  PNode=^Node;  // Указатель на узел
  Node=record  // Тип запись в котором будет храниться информация
  data:integer;
  left,right:PNode; // Ссылки на левого и правого сыновей
end;

var
  Form1: TForm1;
  Tree,p1: PNode;
  N,X,i: integer;

implementation

{$R *.dfm}

{Процедура добавления элемента}
procedure AddToTree (var Tree:PNode;x:integer);
begin
If Tree=nil then begin
New(Tree);
Tree^.data:=x;
Tree^.left:=nil;
Tree^.right:=nil;
exit;
end;
If x < Tree^.data then   // Доб к левому или правому поддереву
AddToTree(Tree^.left,x)  // если меньше корня то в левое поддерево
else
AddToTree(Tree^.right,x);  // если больше то в правое
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:='';
N:=StrToInt(Edit1.Text);
For i:=1 to N do begin
X:=StrToInt(InputBox('Создание дерева','Введите элемент',''));
AddToTree(Tree,X);
Label1.Caption:=Label1.Caption+' '+IntToStr(X);
end;

end;

{Нисходящий обход}
Procedure Nishodiashiy_Obhod(Tree:PNode);
begin
If Tree<>Nil then begin
Form1.Label3.Caption:=Form1.Label3.Caption+' '+IntToStr(Tree^.data);
Nishodiashiy_Obhod(Tree^.Left);
Nishodiashiy_Obhod(Tree^.Right);
end;

end;

{Восходящий обход}
Procedure Voshodyashiy_obhod(Tree:PNode);
begin
If Tree<>Nil then begin
Voshodyashiy_obhod(Tree^.Right);
Form1.Label4.Caption:=Form1.Label4.Caption+' '+IntToStr(Tree^.data);
Voshodyashiy_obhod(Tree^.Left);
end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Label3.Caption:='';
Nishodiashiy_Obhod(Tree);
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
Label4.Caption:='';
Voshodyashiy_obhod(Tree);
end;


end.

Последний раз редактировалось Zaraaa; 01.03.2014 в 19:35.
Zaraaa вне форума Ответить с цитированием
Старый 03.03.2014, 19:08   #2
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию

Как Выполнить операцию поиска в каждом методе и сравнить их эффективность. помогите пжл
Zaraaa вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дерево на Си Vasya94 Помощь студентам 3 08.11.2013 01:09
2-3 дерево С++ dimentius Помощь студентам 0 08.06.2012 17:11
B+ дерево! megaster Помощь студентам 0 10.12.2011 17:01
Я дерево Кукла_колдуна Паскаль, Turbo Pascal, PascalABC.NET 0 20.03.2011 23:07
Дерево Abricosko БД в Delphi 2 03.06.2010 12:16