2017-05-07 1 views
0

Ich habe an einer BST-Suchmethode gearbeitet, die einen booleschen Wert zurückgibt, der angibt, ob der gesuchte Wert innerhalb des Baumes existiert oder nicht, was ist in diesem Code falsch? Nach der Rückkehr geht die Kontrolle jedoch wieder an den else if block. Kann mir jemand sagen, was ich falsch mache?BST Suchmethode gibt das erwartete Ergebnis nicht zurück

Hilfe wird sehr geschätzt. Vielen Dank im Voraus!

public class Node 
{ 

    public int Value { get; set; } 

    public Node Left { get; set; } 

    public Node Right { get; set; } 

    public Node(int value, Node left, Node right) 
    { 
     Value = value; 
     Left = left; 
     Right = right; 
    } 
} 

public class BinarySearchTree 
{   
    public static bool Search(Node root, int value) 
    { 

     if (root!=null) 
     { 
      if (root.Value == value) 
      {      
       return true; 
      } 
      else if (root.Value < value) 
      { 
       Search(root.Right, value); 
      } 
      else 
      { 
       Search(root.Left, value); 
      } 

     }    
     return false;    
    } 

    public static void Main(string[] args) 
    { 
     Node n1 = new Node(1, null, null); 
     Node n3 = new Node(4, null, null); 
     Node n2 = new Node(2, n1, n3); 
     bool flag = Search(n2, 4); 
     //flag should be true 
     Console.WriteLine("************* " + flag); 
     Console.ReadKey(); 
    } 
} 

Antwort

1

Sie müssen das Ergebnis von jedem Aufruf der Methode zurückgeben. Derzeit, wenn die Steuerung in den Block else/if oder else geht, ignorieren Sie das Ergebnis der Methode.

Auch brauchen Sie nicht die boolesche Flagge nur die Bedingung if (root != null) verwenden.

public static bool Search(Node root, int value) 
{ 
     if (root != null) 
     { 
      if (root.Value == value) 
       return true; 
      else if (root.Value < value) 
       return Search(root.Right, value); 
      else 
       return Search(root.Left, value); 
     } 
     return false; 
} 
+0

Was für ein Fehler !!! Danke vielmals !! – Dev

Verwandte Themen