Написать функцию, которая находит наименьший элемент дерева — Delphi(Делфи)

Написать функцию, которая находит наименьший элемент дерева.
Написать процедуру, которая выводит на экран (по одному разу) все вершины дерева.

type
  PItem = ^TItem;

  TItem = packed record
    Left: PItem;
    Right: PItem;
    Data: Integer;
  end;

.. .
// функция для поиска минимума
  function FindMin(where: PItem): PItem;

var
  lMin: Integer;

procedure DoFind(p: PItem);
begin
  if p <> nil then
  begin
    if p^.Data < lMin then
    begin
      lMin := p^.Data;
      result := p;
    end;
    DoFind(p^.Left);
    DoFind(p^.Right);
  end;
end;

begin
  if where = nil then
    result := nil
  else
  begin
    lMin := where^.Data;
    result := where;
    DoFind(where);
  end;
end;
.. .
// процедура для вывода дерева
  procedure PrintTree(pTree: PItem);

begin
  if pTree <> nil then
  begin
    Memo1.Lines.Add(IntToStr(pTree^.Data)); // куда выводить-то?
    PrintTree(pTree^.Left);
    PrintTree(pTree^.Right);
  end;
end;
.. .
// создаем дерево pTree
  PrintTree(pTree); // распечатали
pMin := FindMin(pTree); // ищем...
if pMin = nil then
begin
  // дерево пустое
end
else
begin
  // нашли минимум pMin
end;

Leave a Comment