Ben atamaları biri için C ++ kullanarak bir ikili arama ağacı uygulamak zorunda. Ben sınıf oluşturulur ve uygulamaya teşebbüs ettik InsertItem, PrintTree, DeleteTree sınıf için yöntemler, ben her şeyi doğru yaptım ama nedense benim program çökmesini tutar düşünüyorum :(
İşte benim kod:
PrintTree Yöntemi
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 Yöntemi
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;
}
Yöntemin Benim dizisi programı çöker kadar çağırır:
Ben öğeleri eklemek F,B,G,A,D,I,C,E,H: iyi çalışıyor
Ben buna PrintTree(): iyi çalışır
Ben buna DeleteTree(): iyi çalışır
Ben buna PrintTree()yine: Program çöküyor
Nedense ifadesi if(RootNode == NULL)sonrasında gerçek dönmüyor DeleteTree()yöntemi denir program mevcut ve çöker olmayan bir şeyi yazdırmaya çalışan, böylece. Bunu neden oluyor emin değilim, yanlış burada ne işim var?
Her türlü yardım takdir edilmektedir.













