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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2012, 15:12   #1
Funy
Пользователь
 
Регистрация: 13.12.2011
Сообщений: 16
По умолчанию двоичные деревья поиска

здраствуйте!!

а )Организовать программно двоичное дерево с помощью процедуры поиска и включения ключа (Search).
б )Написать и отладить программу для поэлементного вывода значений узлов построенного дерева обходом дерева слева направо(Inorder).


вот код, но он с ошибками! не могу понять где ошибся! Помогите пожалуйста!
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;
 
Type WPtr=^Word_;
      Word_=record
        key:integer;
        count:word;
        left,right:WPtr;
      end;
 
type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  f:TextFile;
    root:WPtr;
 
implementation
 
{$R *.dfm}
 
 
procedure Search (x:integer; var  p:WPtr);
begin
 
  if p= Nil then
   begin
  GetMem (p,sizeof(Word_));
  p^.key:=x;
  p^.count:=1;
  p^.left:=Nil;
  p^.right:=Nil;
  end
 
  else
  if  x<p^.key then
  search(x,p^.left)
   else
     if x>p^.key then Search (x,p^.right)
      else p^.count:=p^.count+1;
  end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
var
 x:Integer;
 
begin
           AssignFile(f,'f.txt');
      readln(f,x);
      while not eof (f) do begin
       Search(x,root);
       readln(f,x);
       end;
 end;
 
   procedure PrintTree(treenode : TTreeNode; root : WPtr);
   var newnode : TTreeNode;
   begin
      if Assigned(root) then
      begin
         newNode := TreeView1.Items.AddChild(treenode, IntToStr(root^.key));
         PrintTree(newnode, root^.right);
         PrintTree(newnode, root^.left);
      end;
   end;
 
var
   root : WPtr;
begin
   PrintTree(nil, root);
end;
 
end;
 
 
end.
Funy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двоичные деревья Raz0r Помощь студентам 7 11.12.2011 10:32
Двоичные деревья. sibguty Помощь студентам 12 10.12.2011 18:41
Двоичные деревья на Pascal-е seo-romka Помощь студентам 2 28.04.2011 17:58
Двоичные деревья. Maksik Помощь студентам 1 22.06.2010 21:57
Двоичные деревья в Паскале Paulo Помощь студентам 0 25.06.2009 23:31