Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Prüfe: Sind alle Blätter in einem Baum die Maxima der Pfade zu ihnen?

  Alt 20. Mai 2017, 22:49
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;
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat