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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2013, 22:25   #1
Pav163
Новичок
Джуниор
 
Регистрация: 04.02.2013
Сообщений: 1
По умолчанию Удалить из бинарного дерева отрицательные элементы Pascal

Никак не могу удалить все отрицательные элементы из дерева. Надеюсь на вас. Спасибо
Код:
unit Unit1;

interface

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

type
 PNode=^TNode;
  TNode=record
    nKey:Integer;
    nCount:integer;
    pLeft:pNode;
    pRight:pNode;
  end;

  TTree=class
  private
  public
    fTree:pNode;
    procedure Search(x:integer;var node:PNode);
    constructor Create;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    TreeView1: TTreeView;
    procedure Vyvod(node:PNode;item:TTreeNode);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  t:TTree;
implementation

{$R *.dfm}
constructor TTree.Create;
begin
  fTree:=nil;
end;

procedure TTree.Search(x: Integer; var node: PNode);
begin
  if node=nil  then
  begin
    node:=new(PNode);
    with node^ do begin
      nKey:=x;
      nCount:=1;
      pLeft:=nil;
      pRight:=nil;
    end;
  end
  else
    if x<node^.nKey then
      Search(x,node^.pLeft)
    else
      if x>node^.nKey then
        Search(x,node^.pRight)
      else
        inc(node^.nCount);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  znac, n: string;
  i, zn, nm:integer;
begin
  t:=TTree.Create;
  n:=Inputbox('Vvod', 'Vvedite kol-vo chisel', '');
  nm:=StrToInt(n);
  for I := 0 to nm do
  begin
  try
  znac:=inputbox('Vvod', 'Vvedite chislo', '');
  zn:=StrToInt(znac);
  except
  ShowMessage('Error');
  end;
    t.Search(zn, t.fTree);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  item:TTreeNode;
begin
  item:=nil;
  Vyvod(t.fTree,item);
end;



procedure TForm1.Vyvod(node:PNode;item:TTreeNode);
var
  tmpItem:TTreeNode;
begin
  if node <> nil then begin
    tmpItem:=TreeView1.Items.AddChild(item,inttostr(node^.nKey));
    vyvod(node^.pLeft,tmpItem);
    vyvod(node^.pRight,tmpItem);
  end;
end;


end.

Последний раз редактировалось Serge_Bliznykov; 05.02.2013 в 00:17.
Pav163 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывести элементы самой длинной ветви бинарного дерева. 7rubin Помощь студентам 1 24.05.2012 22:01
преобразование бинарного дерева Lerris Общие вопросы C/C++ 0 09.03.2012 21:12
заменить отрицательные элементы порядковымы номерами Pascal rager06 Помощь студентам 1 20.12.2010 20:31
Высота бинарного дерева m9yt Общие вопросы C/C++ 5 13.03.2010 22:17
Сформировать новый массив,содержащий отрицательные элементы - Задача по PASCAl. Waia Помощь студентам 2 17.12.2008 18:27