Ciao a tutti.
Sto facendo un programma in c++ che mi permette di costruire un albero binario di ricerca e di effettuare le operazioni base più importati(add, remove, search ecc...).

Ho costruito 2 classi (node e albero).

Il problema sorge con i distruttori di queste due classi.
Nonostanze li abbia implementati, non funzionano in quanto rimane della memoria allocata nello heap.

Il distruttore di nodo è :
~nodo(){
delete right;
delete left;
delete parent;
}

Il distruttore di albero è:
~albero(){
delete root->left;
delete root->right;
delete root->parent;
}

Come posso correggere i miei errori in modo da avere tutta la memoria dinamica libera?

Grazie in anticipo per l'aiuto!