Eine
while
Schleife hat in einem rein rekursiven Algorithmus eher nichts zu suchen
An dieser Stelle fehlt außerdem ein
begin
..
end
Block, falls du vorhattest nicht nur die erste Bedingung in der Schleife auszuführen. Allgemein ist dein Code aber viel zu kompliziert gedacht:
Delphi-Quellcode:
type
TNodeValue = 1..MAXINT;
PTreeNode = ^TTreeNode;
TTreeNode = record
public
Value: TNodeValue;
L: PTreeNode;
R: PTreeNode;
end;
function BlattMax(Node: PTreeNode; MaxValue: TNodeValue): Boolean; overload;
begin
if (not Assigned(Node^.L)) and (not Assigned(Node^.R)) then
begin
Result := (Node^.Value > MaxValue);
end else
begin
if (Node^.Value > MaxValue) then
begin
MaxValue := Node^.Value;
end;
Result := true;
if Assigned(Node^.L) then Result := Result and BlattMax(Node^.L, MaxValue);
if Assigned(Node^.R) then Result := Result and BlattMax(Node^.R, MaxValue);
end;
end;