Der Vorgang des Suchens ist so einfach, dass wir uns wiederum auf eine kurze Erläuterung des zugehörigen Quellcodes beschränken (Bezug wieder das Delphi-Projekt: 5_Suchbaum_Node_Lsg )
Bei leeren Baum ist das Element natürlich nicht im Baum vorhanden. Ist der aktuelle Knoten schon der gesucht, dann ist das Element natürlich im Baum vorhanden. Ansonsten ist das Element ganau dann im Baum, wenn es im linken (Fall : Elem <= Knoten) bzw wenn es im rechten (Fall : Elem > Knoten) Teilbaum ist. |
function TSearchTreeNode.iselement(Elem: TSortElement):Boolean; begin if isempty then result := false else if Elem.Equal(TSortElement(Self.ReadValue)) then result := true else if Elem.GreaterThan(TSortElement(Self.ReadValue)) then result := TSearchTreeNode(Self.ReadRightNode).isElement(Elem) else result := TSearchTreeNode(Self.ReadLeftNode).isElement(Elem) end; |
Während die Methode iselement nur True oder False liefert, erhält man mit Search den Knoten, dessen Wurzel gleich dem gesuchten Element ist. Genauer: denjenigen Knoten, der am höchsten im Baum steht. |
function TSearchTreeNode.Search(Elem: TSortElement):TSearchTreeNode; begin if isempty then result := Self else if Elem.Equal(TSortElement(Self.ReadValue)) then result := Self else if Elem.GreaterThan(TSortElement(Self.ReadValue)) then result := TSearchTreeNode(Self.ReadRightNode).Search(Elem) else result := TSearchTreeNode(Self.ReadLeftNode).Search(Elem) end; |
![]() |
|
![]() |
|
![]() |
Zur
nächsten Seite
![]() |
© 2000 LK 12 If und G. Kubitz | Hannah-Arendt-Gymnasium, Lengerich |