Θα πρέπει να εφαρμόσει ένα δυαδικό δέντρο αναζήτησης με χρήση C ++ για μία από τις αναθέσεις. Έχω δημιουργήσει την τάξη, και προσπάθησε να εφαρμόσει την insertItem, PrintTree, DeleteTree μεθόδους για την κατηγορία, νομίζω ότι έκανα τα πάντα σωστά, αλλά για κάποιο λόγο το πρόγραμμά μου κρατά συντρίβεται :(
Εδώ είναι κωδικός μου:
Μέθοδος 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);
}
Μέθοδος 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;
}
σειρά μου της μεθόδου απαιτεί μέχρι τις συντριβές προγράμματος:
Εισάγω στοιχεία F,B,G,A,D,I,C,E,H: δουλεύει μια χαρά
Καλώ PrintTree(): δουλεύει μια χαρά
Καλώ DeleteTree(): δουλεύει μια χαρά
Καλώ PrintTree()και πάλι: το πρόγραμμα διακόπτεται
Για κάποιο λόγο η έκφραση if(RootNode == NULL)δεν επιστρέφει αληθές αφού η DeleteTree()μέθοδος ονομάζεται, έτσι ώστε το πρόγραμμα προσπαθεί να εκτυπώσετε κάτι που δεν υπάρχει και κολλάει. Δεν είμαι σίγουρος γιατί συμβαίνει αυτό, τι κάνω λάθος εδώ;
Οποιαδήποτε και όλες βοήθεια είναι ευπρόσδεκτη.













