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 |