Je dois mettre en place un arbre de recherche binaire en utilisant C ++ pour l' une des missions. J'ai créé la classe, et a tenté de mettre en œuvre le InsertItem, PrintTree, DeleteTree méthodes de la classe, je pense que je l'ai fait tout droit , mais pour une raison quelconque mon programme se bloque continuellement :(
Voici mon code:
Méthode PrintTree
template <class TItem>
void BinarySearchTree<TItem>::PrintTree()
{
PrintTree(RootNode);
}
template <class TItem>
void BinarySearchTree<TItem>::PrintTree(BinarySearchTreeNode* Node)
{
if(Node == NULL)
return;
cout << Node->Data << endl;
PrintTree(Node->LeftChild);
PrintTree(Node->RightChild);
}
Méthode DeleteTree
template <class TItem>
void BinarySearchTree<TItem>::DeleteTree()
{
DeleteTree(RootNode);
}
template <class TItem>
void BinarySearchTree<TItem>::DeleteTree(BinarySearchTreeNode* Node)
{
if(Node == NULL)
return;
DeleteTree(Node->LeftChild);
DeleteTree(Node->RightChild);
delete Node;
}
Ma séquence de méthode appelle jusqu'à ce que le programme se bloque:
Insérer des éléments F,B,G,A,D,I,C,E,H: fonctionne très bien
J'appelle PrintTree(): fonctionne très bien
J'appelle DeleteTree(): fonctionne très bien
Je demande à PrintTree()nouveau: plante programme
Pour une raison quelconque l'expression if(RootNode == NULL)ne renvoie pas vrai après la DeleteTree()méthode est appelée, de sorte que le programme tente d'imprimer quelque chose qui n'existe pas et se bloque. Je ne sais pas pourquoi cela se passe, ce que je fais mal ici?
Toute aide est appréciée.













