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

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

code: #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;

автор: Vovan-VE

Поделиться:

Похожие статьи: