Arbre Binaire Fonction De Hauteur
Je suis en train de travailler sur une fonction pour trouver la hauteur d'un arbre de recherche binaire. J'ai trouvé une méthode qui semble comme il devrait fonctionner, mais je reçois cette erreur, et je ne sais pas quel est le problème avec elle: une exception non Gérée à 0x00903417 dans PA5.exe: 0xC0000005: violation d'Accès lecture de l'emplacement 0x00000004.
Voici ma hauteur des fonctions...
template <class T>
int BST<T>::height()
{
return displayHeight(mRootNode);
}
template <class T>
int BST<T>::displayHeight(BST<T> *node)
{
if (node = NULL)
{
return 0;
}
int left = displayHeight(node->mLeft);
int right = displayHeight(node->mRight);
if (left > right)
return 1 + left;
else
return 1 + right;
}
C'est la mise en œuvre dans la fonction principale...
cout << endl << "height: " << tree.height();
Si je dois inclure quoi que ce soit d'autre, faites le moi savoir. Merci!
J'ai écrit le même code, mais la réponse que j'obtiens est un de plus que nécessaire de répondre. Donc, pour corriger que dans la condition null, il doit retourner -1 et pas 0.
OriginalL'auteur nym_kalahi | 2012-10-24
Vous devez vous connecter pour publier un commentaire.
devrait être
car en C++
=
est un opérateur d'affectation et==
est l'opérateur relationnel à des fins de comparaison.Pourquoi le crash?
Lorsque vous ne
if (node = NULL)
, vous assignezNULL
à nœud et depuis NULL est0
laif
condition échoue. Si vous allez de l'avant et d'appeler la fonction de manière récursive sur les nœuds enfants. Supposons maintenant quenode
était en fait la valeur NULL lorsque la fonction a été appelée pour la première fois, vous allez faire des appels récursifs sur NULL de droite et de gauche des enfants!!! Conduisant à l'accident.Vous êtes les bienvenus. Nous avons tous fait :), je vois que vous êtes nouveau et n'ont pas accepté la réponse aux 3 questions que vous avez posées. Si vous trouvez une réponse à la résolution du problème, vous pouvez aller de l'avant et d'accepter la réponse en cliquant sur la case à cocher en regard de la réponse.
Oups, my bad. Je vais le faire!
correct........
OriginalL'auteur codaddict
Vous affectation de la valeur null à votre nœud de paramètre variable dans votre instruction if.
devrait être
OriginalL'auteur Jake H
Méthode pour trouver la hauteur, tout en créant un arbre(BST):Pour les deux sous-arbre gauche et à droite de la sous-arborescence::
Mettre les éléments que vous voulez mettre dans votre arbre binaire dans un tableau avant de créer l'arbre actuelle.
Calculer le nombre d'éléments qui sont supérieures à la racine, ce qui sera à la gauche de l'arbre et de même avec le côté droit.
Puis, pendant que vous ajoutez des éléments à votre arbre. Chaque fois que définir un indicateur de bits à 1 ou 0 selon que vous l'ajouter à la sous-arbre gauche ou la droite.
C'est alors que vous ajoutez un nœud sur le côté gauche.
C'est alors que vous ajoutez un nœud sur le côté droit.
OriginalL'auteur BlackDragon
C'est parce que vous avez attribué le nœud NULL je.e valeur NULL est égal à 0 , alors la condition d'échec.
faire si(node==NULL)
au lieu de
if(node=NULL)
OriginalL'auteur Ashit