Tengo que poner en práctica un árbol binario de búsqueda usando C ++ para una de las tareas. He creado la clase, y el tratado de aplicar las InsertItem, PrintTree, DeleteTree métodos para la clase, creo que lo hice todo bien pero por alguna razón mi programa sigue fallando :(
Aquí está mi código:
Método 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étodo 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;
}
Mi secuencia de llamadas a métodos hasta que el programa se bloquea:
Insertar elementos F,B,G,A,D,I,C,E,H: funciona bien
Me llamo PrintTree(): funciona bien
Me llamo DeleteTree(): funciona bien
Llamo PrintTree()de nuevo: programa se bloquea
Por alguna razón, la expresión if(RootNode == NULL)no devuelve cierto después de que el DeleteTree()método se llama, por lo que el programa intenta imprimir algo que no existe y se estrella. No estoy seguro de por qué ocurre esto, ¿qué estoy haciendo mal aquí?
Cualquier y toda ayuda es apreciada.













