Ağaç, alfabetik olarak sözcüklerin ilk harfine göre sıralanır. Söyleyebileceğim bazı kelimeler, bazılarını yapamam. Silmeye çalıştığımda olduğu gibi hiçbir şey olmuyor, ancak yine de deleteWord işlevinden çıkıyor. Ayrıca ağaçta kalan iki kelimeye inecek ve bunlardan birini silmeye çalıştığımda program hiçbir şey yapmıyor. Sadece bana hiçbir şey giremediğim boş bir satır veriyor; Bir süre içinde sıkışmış ama nedenini anlayamıyorum. Bazen bir sözcüğü silmeyi ve silinmeyi değil, başka bir düğümün verileriyle değiştirilir ve yinelenen bir düğümüm vardır. Burada bir mantık hatası olduğunu biliyorum ama bulamıyorum.Düğüm işlevini silme, ikili bir arama ağacındaki bazı düğümleri silmeyecek
kelime silme kodudur:
void BinaryTree::displayAll(WordNode* n)
{
if(n)
{
displayAll(n->right);
print(n -> data);
displayAll(n->left);
}
}
ağaca kelime eklemek için
void BinaryTree::addWord(string newWord, string newMeaning)
{
WordNode* temp = new WordNode;
if(empty())
{
temp -> data = Word(newWord, newMeaning);
temp -> left = NULL;
temp -> right = NULL;
temp -> parent = NULL;
root = temp;
}//end if
else
{
current = root;
while(current)
{
if(newWord > current -> data.getWord())
{
if(current -> right == NULL)
{
temp -> data = Word(newWord, newMeaning);
temp -> right = NULL;
temp -> left = NULL;
temp -> parent = current;
current -> right = temp;
current = NULL;
}
else
current = current -> right;
}//if
else if(newWord < current -> data.getWord())
{
if(current -> left == NULL)
{
temp -> data = Word(newWord, newMeaning);
temp -> right = NULL;
temp -> left = NULL;
temp -> parent = current;
current -> left = temp;
current = NULL;
}
else
current = current -> left;
}//elseif
}//while
}//else
}//funct
temp, 'addWord' içinde yerel bir değişkendir, ancak' deleteWord' içinde bulamıyorum, s tanımı 'BinaryTree' üyesi olduğunu varsayabilir miyim? – user3188346
Tekrar hoşgeldiniz. Bize [asgari tam bir örnek] (http://stackoverflow.com/help/mcve) verdiyseniz ve karşılaştığınız hataların daha eksiksiz bir açıklamasını ("takılıp kalıyor") net değilse, bu soruya cevap vermek daha kolay olurdu. . – Beta
, "BinaryTree" in bir üyesidir. DeleteWord işlevinde bildirmedim çünkü yeni bir düğümde işaret etmedim, ancak varolan düğümler için bir işaretçi olarak kullanıyorum. düzenlenmiş açıklama. Ayrıca asgari örneğin ne olacağını bilmiyorum çünkü ne düşündüğümü en az bulduğumda, diğer işlevler için sordum. – ThePeskyWabbit