Hallo Alex,
Zitat von
-lx-:
... dass mit der Fehlersuche hat sich in dem Zusammenhang erledigt. Daher wäre eine "richtige" und "sauberer" Art auf eine höhere Klasse zuzugreifen angebrachter.
Oft ist es genau andersrum - auf einen professionelle Ansatz kommt die Replik "zu aufwändig".
Der abstrakte Datentyp BinaryTree kann mit oder ohne Container-Klasse implementiert werden. Ohne die Fähigkeit zur Selbstdarstellung würde ich eine Single Class Implementierung wählen - hier nur angedeutet:
Delphi-Quellcode:
type
TBinaryTreeNode = class
FValue: Integer;
FParent: TBinaryTreeNode;
FLeft: TBinaryTreeNode;
FRight: TBinaryTreeNode;
// ...
end;
Wenn der Baum sich selbstdarstellen können soll, dann würde ich zusätzlich eine visuelle Container-Klasse implementieren:
Delphi-Quellcode:
type
TBinaryTree = class(TGraphicControl)
FRoot: TTBinaryTreeNode;
procedure Draw;
// ...
end;
Die Basisklasse kannst du nach deinen Bedürfnissen wählen. Der Vorteil dieser Vorgehensweise ist, dass die Informationen zur Selbstdarstellung nicht redundant bei den Knoten liegen - wo sie auch gar nichts zu suchen haben.
Machst du TBinaryTree zu einem Nachfahren von TGraphicControl, dann brauchst du keine PaintBox, sondern hast ein eigenes canvas property.
Zitat von
-lx-:
Woher weist du dass ich "Alex" heiße ?
In Hessen kennt doch jeder jeden - wusstest du das nicht?
Freundliche Grüße