|
Вопрос # 5 365/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Помогите, кто чем может. нижу даны фрагменты программы, по заданию и выводу на экран бинарного дерева.
как мне осуществить поиск заданного образца по нажатию Button3?
я знаю, что нужно осуществить просмотр всех вершин дерева, но не знаю как это осуществить программно....
Приложение: Переключить в обычный режим- type
-
- P_Node = ^T_Node;
- T_Node = record
- info: string;
- key: integer;
- left, right: P_Node;
- end;
-
- var root: P_Node;
-
- procedure InsertInTree(var t: P_Node; k: Integer);
- begin
- if t = nil
- then begin
- new(t);
- t^.left := nil;
- t^.right := nil;
- t^.key := k;
- end
-
- else if k <= t^.key
- then InsertInTree(t^.left, k)
- else InsertInTree(t^.right, k);
- end;
-
-
- procedure ShowTree(t: P_Node; p: TTreeNode);
- begin
- if t <> nil then
- with Form1.TreeView1 do
- begin
- p := Items.AddChild(p, IntToStr (t^.key));
- ShowTree(t^.left, p);
- ShowTree(t^.right, p)
- end;
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- for I := 1 to raz do
- InsertInTree(root, a[i]);
- end;
-
-
-
- procedure TForm1.Button2Click(Sender: TObject);
- var b: boolean;
- begin
- TreeView1.Items.Clear;
- ShowTree(root, NIL);
- TreeView1.FullExpand;
-
- end;
-
 |
Вопрос задал: NeStor (статус: Посетитель)
Вопрос отправлен: 3 июня 2011, 00:02
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 3 июня 2011, 08:40; участников в обсуждении: 1.
|
min@y™ (статус: Доктор наук), 3 июня 2011, 08:40 [#1]:
Цитата (NeStor):
нужно осуществить просмотр всех вершин дерева, но не знаю как это осуществить программно...
Дык нужна примерно такая же рекурсия, как при поиске файлов на диске, включая подкаталоги. Напиши функцию поиска, куда будешь передавать узел, а поиск будет среди прямых потомков этого узла. Если при переборе потомков встретился узел, у которого есть потомки, то рекурсивно вызываешь эту же функцию, куда подставляешь этот узел. Вот и всё.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|