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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2009, 18:49   #1
VadEr
Форумчанин
 
Аватар для VadEr
 
Регистрация: 24.03.2009
Сообщений: 375
По умолчанию Алгоритм создания дерева Delphi

Доброго времени суток!

Уважаемые программисты! Помогите пожалуйста создать алгоритм, для создания дерева по полям из БД.

Сама Таблица примерно такая:
table.jpg

А дерево созданное вручную по данной таблице:
Tree.jpg

Как мне сделаь это програмно?
VadEr вне форума Ответить с цитированием
Старый 02.11.2009, 10:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не сильно сложно. Можно рекурсией. Прикрепи БД, попробуем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2009, 10:50   #3
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Элементарное двоичное дерево - неоднократно рассматривалось.
Код:
 type
       TreePointer = ^tree;
       tree = record
         data: char;
         left: TreePointer;
         right:TreePointer;
       end;

     { добавить элемент в двоичное дерево }
     function Stree(root,r:TreePointer;data:char);TreePointer;
     begin
       if r=nil then
       begin
         new(r); { получить новую вершину }
         r^.left:=nil;
         r^right:=nil;
         r^.data:=data;
         if data<root^.data then root^.left:=r
         else root^.right:=r;
         STree:=r;
       end else
       begin
         if data<r^.data then STree:=STree(r, r^.left, data)
         else STree:=STree(r, r^.right, data);
       end;
     end; { конец функции добавления элемента в двоичное
                         дерево }


P.S. код - не мой

Последний раз редактировалось danekne; 02.11.2009 в 10:54.
danekne вне форума Ответить с цитированием
Старый 02.11.2009, 10:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
danekne
Ты скорее всего тему не понял. Автору нужно таблицу в дерево превратить на основе TreeView и индексов в таблице, а не список составлять.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2009, 11:04   #5
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Ну да, это другой вопрос))) Ну, нааадеюсь и дерево поможет
danekne вне форума Ответить с цитированием
Старый 03.11.2009, 08:45   #6
VadEr
Форумчанин
 
Аватар для VadEr
 
Регистрация: 24.03.2009
Сообщений: 375
По умолчанию

Вот сам разобрался, если кому нужно:
Код:
procedure TForm1.Button1Click(Sender: TObject);

procedure find(t:TTreeNode; i:integer);
var
 tl :TTreeNode;
 bm:TBookmark;
begin
if Table.Locate('NVERCH', i, []) then begin
 while (TableNVERCH.AsInteger = i) and (not Table.Eof) do
 begin
    bm := Table.GetBookmark;
    tl:= Tree.Items.AddChild(t, TableNAIM.Value);
    find(tl, TableNUM.AsInteger);
    Table.GotoBookmark(bm);
    Table.FreeBookmark(bm);
    Table.Next;
 end;
end;
end;

begin
 Table.First;
 find(nil, 0);
 Tree.FullExpand;
end;
VadEr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обход бинарного дерева в ширину. Delphi 7. ZhooZhik Помощь студентам 4 01.12.2011 02:48
Создания бинарного дерева С++ Olya90 Помощь студентам 0 10.06.2009 18:58