ich Code versuche, aus der Höhe von binärer Suchanfrage wrotte unter dem Code tree.I zu finden:Finding Höhe von BST für jeden Knoten
int height(node *root)
{
if(root=NULL)
return -1;
int left=height(root->left);
int right=height(root->right);
return max(left,right)+1;
}
ich die Knoten 5,17,34 und 2 in den Baum eingefügt und hat die Funktion root to height übergeben. Unerwarteterweise wurde das Programm abgestürzt und ich musste das Fenster während der Windows-Fehlerberichterstattung erzwingen (ich versuchte es in einer IDE). Ich habe das auch in einem Online-Compiler ausprobiert, aber es zeigte auch einen Laufzeitfehler.
die Hauptfunktion:
int main()
{
node *root=new node();
root=NULL;
root=insert(root,5);
root=insert(root,17);
root=insert(root,34);
root=insert(root,2);
int x=height(root);
}
die INSERT-Funktion, wenn im Fall, dass Sie betrachten es
node *insert(node *root,int d)
{
if(root==NULL)
{
node *temp=new node();
temp->data=d;
temp->left=temp->right=NULL;
root=temp;
}
else
{ if(root->data>d)
{
root->left=insert(root->left,d);
}
else
root->right=insert(root->right,d);
}
return root;
}
ich erwähnen möchte, dass das Problem nur dann gestartet, wenn ich versucht, die Höhe zu verwenden, Funktion im Programm.Vor diesem hatten alle anderen Funktionen kompiliert und erfolgreich ausgeführt.Ich habe versucht, Trockenlauf, aber kann nicht herausfinden, das Problem.
Sie haben '=' anstelle von '==' verwendet. Voting zum Schließen als Tippfehler ([demo] (http://ideone.com/5VWlSc)). – dasblinkenlight
Bei genauerer Betrachtung der Funktion ist der Wert, der an einen Knoten zurückgegeben wird, nicht seine eigene Höhe, sondern die Höhe seiner Unterknoten. Die wahre Höhe des Knotens kann nur dem übergeordneten Knoten bekannt sein, wenn die Funktion +1 zu dem Knoten hinzufügt Die Höhe von BST wird an die Hauptfunktion zurückgegeben, wenn +1 am Ende des letzten Funktionsaufrufs hinzugefügt wird. –