Итак, я пытаюсь создать свой собственный BST для проверки орфографии, потому что я хочу использовать дополнительную функциональность (найти подходящие узлы для предложений). В любом случае, я могу создать корневой узел, но после этого он не работает. Например, если у меня есть следующий код:Двоичный корень дерева поиска работает, но у него не могут быть дети?
BST myTree;
myTree.add("rootElement");
myTree.add("abcChild");
Если я корневой узел (* корень) общественности и проверить myTree.root-> левый = NULL ||! myTree.root-> right! = NULL, я получаю ошибку seg. Я не понимаю. Вот некоторые из моего кода:
struct node {
string data;
node *left;
node *right;
};
void BST::add(string newData)
{
//Find a position
if (root == NULL){
root = new node;
root->data = newData;
root->left = NULL;
root->right = NULL;
}
else{ //remember to include string
if(root->data.compare(newData) < 0){
// Add to left
addRecursive(root->left, newData);
}
else{
// Add to right
addRecursive(root->right, newData);
}
}
}
void BST::addRecursive(node *currentNode, string newData)
{
if (currentNode == NULL){
currentNode = new node;
currentNode->data = newData;
currentNode->left = NULL;
currentNode->right = NULL;
}
else{ //remember to include string
if(currentNode->data.compare(newData) < 0){
// Add to left
addRecursive(currentNode->left, newData);
}
else{
// Add to right
addRecursive(currentNode->right, newData);
}
}
}
В чем дело?
причина, почему вы получаете ошибку сегм происходит потому, что вы Арен 't malloc размер вашей структуры в памяти – Kevin
Так много помощи от всех так быстро! Спасибо вам всем! –