Zur Themenübersicht     

Suchbäume: Suchen

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 )

 

Links Erklärung, rechts Code
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;