⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 btree1.~pas

📁 在故障事件关联中使用的binary tree.包含一个简单的demo演示。效率还可以。
💻 ~PAS
字号:
unit BTree1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  BinaryTree, StdCtrls, Spin;

type
  TForm1 = class(TForm)






    add: TButton;
    SpinEdit1: TEdit;
    Memo1: TMemo;
    list2: TButton;
    searchresult: TLabel;
    search: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure addClick(Sender: TObject);
    procedure listClick(Sender: TObject);
    procedure searchClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
   bt:TBintree
  end;

 TmyTreeItem=class(TBinTreeItem)	// the base class has to be overriden !
  public
   data:integer;
   constructor create(i:integer);
   function compare(a:TBinTreeItem):Shortint;  override; // data
   // a < self :-1  a=self :0  a > self :+1
   procedure copy(ToA:TBinTreeItem);   override;         // data
   procedure list; override;
  end;
var
  Form1: TForm1;

implementation

{$R *.DFM}

constructor TmyTreeItem.create(i:integer);
begin
 inherited create;
 data:=i;
end;

// a < self :-1  a=self :0  a > self :+1
function TmyTreeItem.compare(a:TBinTreeItem):Shortint;
begin
 if TmyTreeItem(a).data < data then result:=-1
 else
  if TmyTreeItem(a).data = data then result:=0
  else
   if TmyTreeItem(a).data > data then result:=1;
end;

procedure TmyTreeItem.copy(ToA:TBinTreeItem);
begin
 TmyTreeItem(ToA).data:=data;
end;

procedure TmyTreeItem.list;
begin
 form1.memo1.lines.add(inttostr(data));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 bt:=TBinTree.create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 bt.destroy;
end;

procedure TForm1.addClick(Sender: TObject);
var bti:TmyTreeItem;
h:boolean;
begin
 bti:=TmyTreeItem.create( strtointdef(SpinEdit1.Text,0));
 h:=bt.add(bti);
end;

procedure TForm1.listClick(Sender: TObject);
begin
 memo1.clear;
 bt.list;
end;

procedure TForm1.searchClick(Sender: TObject);
var bti,j:TmyTreeItem;
begin
 bti:=TmyTreeItem.create( strtointdef(SpinEdit1.text,0));
 j:=bti;
 if bt.Search(j) then searchresult.caption:='Y' else searchresult.caption:='N';
 bti.destroy;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -