Was ist das Problem mit dieser Funktion

stimmen
1

hallo ich schrieb ein BST und hat folgende Funktion zum Hinzufügen von Child.

void addChild(T value)  
{  
  temp = root;  
  while(0 != temp)  
  {  
     temp1 = temp;  
     if(value  > temp->getValue())  
          temp = temp->getRightChild();   
      else  
           temp = temp->getLeftChild();  
  }  
  if(temp1->getValue() > value)  
  {   
       temp1->setRightChild(new Child(value));  
  }  
  else  
  {  
       temp1->setLeftChild(new Child(value));  
  }  
}  

Ich gebe 23 12 122 1 121 15 als Eingabe. Wurzel-Knoten 23, die i in Konstruktor der Klasse sind zu schaffen.

Problem: Wenn ich Baum - Traversal tue ich bin immer nur 23 und 15 als Ausgabe. Frage : Was ich tue , falsch in dieser Funktion?

Veröffentlicht am 23/12/2010 um 10:42
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
1

Versuchen:

if(value > temp1->getValue()) 

... sonst Ihre unterscheidet sich für eine Stelle in der Schleife vom Such Einsetzzustandes oben.

Beantwortet am 23/12/2010 um 10:47
quelle vom benutzer

stimmen
1

Die Bedingungen werden gemischt.

if (value> temp-> getValue ()): getRight

ist das Gegenteil zu

if (temp1-> getValue ()> Wert): Setright

Versuchen Sie, nur die letzte Bedingung zu ändern.

Beantwortet am 23/12/2010 um 10:47
quelle vom benutzer

stimmen
0

Ich stimme mit früheren Antworten von Kapitän und sje, aber sie erklären nicht die schwere, sollten wir sagen, under von Ihrem Baum. Das mögliche Problem ist , dass Sie fügen Wert als Kind von TEMP1 , insgesamt vorheriges Kind zu verwerfen. Das wird wahrscheinlich in T getan :: setRightChild () und T :: setLeftChild () Funktionen.

Beantwortet am 23/12/2010 um 10:52
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more