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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 08:13   #1
Danil_94
Новичок
Джуниор
 
Регистрация: 08.06.2012
Сообщений: 1
По умолчанию

Добрый день. как заполнить бинарное дерево из текстового файла? у нас в файле хранятся фамилии. надо заполнить ими дерево.

я написал программу, но дереве уходит в сторону, а надо чтобы все было по порядку,с т.е. чтобы у каждого родителя были дочерние элементы... прошу помогите, парюсь не знаю сколько.
Код:
TreeF = ^Node;

  Node = record
    Name: String[10];
    Age: byte;
    papa, mama: TreeF;
  end;

var
  Form1: TForm1;
  f: textfile;
  Me, P: TreeF;

implementation

{$R *.dfm}

Procedure Add(Tree: TreeF; S: string; X: byte);
var
  ch, i, g: byte;
  T: TreeF;
begin
  new(T);
  T^.Name := S;
  T^.Age := X;
  T^.mama := nil;
  T^.papa := nil;
  if Tree = nil then
    Tree := T
  else if Tree^.mama = nil then
    Tree.mama := T
  else if Tree^.papa = nil then
    Tree.papa := T
  else if (Tree^.mama.papa = nil) or (Tree^.mama.mama = nil) then
    Add(Tree.mama, S, X)
  else
    Add(Tree.papa, S, X)
end;





procedure PrintNode(TN: TreeF; i: TTreeNode);
var
  K: TTreeNode;
begin
  if TN <> nil then
  begin
    K := Form1.TreeView1.Items.AddChild(i, TN^.Name + ' ' + inttostr(TN^.Age));
    PrintNode(TN^.mama, K);
    PrintNode(TN^.papa, K);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  S, M: string;
  i, X: byte;
  H: TTreeNode;
begin
  reset(f);
  while not eof(f) do
  begin
    readln(f, S);
    for i := 1 to length(S) do
      if S[i] = ' ' then
      begin
        M := copy(S, 1, i - 1);
        X := strtoint(copy(S, i + 1, 2));
      end;
    Add(Me, M, X);
  end;
  H := nil;
  PrintNode(Me, H);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  S: string;
  i, g: byte;
begin
  new(Me);
  Me^.Name := 'Радик Тухватулин';
  Me^.Age := 19;
  Me^.papa := nil;
  Me^.mama := nil;
  Assignfile(f, 'Текстовый документ.txt');
  ListBox1.Items.LoadFromFile('Текстовый документ.txt');
end;

end.
Вложения
Тип файла: rar вот она.rar (180.8 Кб, 16 просмотров)

Последний раз редактировалось Stilet; 08.06.2012 в 08:23.
Danil_94 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Высота бинарного дерева dido171 Помощь студентам 4 02.12.2014 13:30
Построение бинарного дерева LordAlex91 Общие вопросы C/C++ 2 18.02.2012 15:49
!!! ОБХОДЫ БИНАРНОГО ДЕРЕВА !!! aleks.halk Помощь студентам 0 03.04.2011 01:08
Заполнение бинарного файла. polarity Помощь студентам 2 10.06.2010 08:43
сумма бинарного дерева Sparky Win Api 0 16.03.2010 18:15