Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 365

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Помогите, кто чем может. нижу даны фрагменты программы, по заданию и выводу на экран бинарного дерева.

как мне осуществить поиск заданного образца по нажатию Button3?
я знаю, что нужно осуществить просмотр всех вершин дерева, но не знаю как это осуществить программно....

Приложение:
  1. type
  2.  
  3. P_Node = ^T_Node;
  4. T_Node = record
  5. info: string;
  6. key: integer;
  7. left, right: P_Node;
  8. end;
  9.  
  10. var root: P_Node;
  11.  
  12. procedure InsertInTree(var t: P_Node; k: Integer);
  13. begin
  14. if t = nil
  15. then begin
  16. new(t);
  17. t^.left := nil;
  18. t^.right := nil;
  19. t^.key := k;
  20. end
  21.  
  22. else if k <= t^.key
  23. then InsertInTree(t^.left, k)
  24. else InsertInTree(t^.right, k);
  25. end;
  26.  
  27.  
  28. procedure ShowTree(t: P_Node; p: TTreeNode);
  29. begin
  30. if t <> nil then
  31. with Form1.TreeView1 do
  32. begin
  33. p := Items.AddChild(p, IntToStr (t^.key));
  34. ShowTree(t^.left, p);
  35. ShowTree(t^.right, p)
  36. end;
  37. end;
  38.  
  39. procedure TForm1.Button1Click(Sender: TObject);
  40. begin
  41. for I := 1 to raz do
  42. InsertInTree(root, a[i]);
  43. end;
  44.  
  45.  
  46.  
  47. procedure TForm1.Button2Click(Sender: TObject);
  48. var b: boolean;
  49. begin
  50. TreeView1.Items.Clear;
  51. ShowTree(root, NIL);
  52. TreeView1.FullExpand;
  53.  
  54. end;
  55.  


NeStor Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: NeStor (статус: Посетитель)
Вопрос отправлен: 3 июня 2011, 00:02
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 3 июня 2011, 08:40; участников в обсуждении: 1.
min@y™

min@y™ (статус: Доктор наук), 3 июня 2011, 08:40 [#1]:

Цитата (NeStor):

нужно осуществить просмотр всех вершин дерева, но не знаю как это осуществить программно...

Дык нужна примерно такая же рекурсия, как при поиске файлов на диске, включая подкаталоги. Напиши функцию поиска, куда будешь передавать узел, а поиск будет среди прямых потомков этого узла. Если при переборе потомков встретился узел, у которого есть потомки, то рекурсивно вызываешь эту же функцию, куда подставляешь этот узел. Вот и всё.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:59
Выполнено за 0.02 сек.