Я пытаюсь вставить 4 имени в BST. У меня есть операторы print, которые говорят, где в дереве проходит имя, и затем оператор print, который выводит «ноль», когда имя находит правильное место. Например:
Если корень - Деннис, а следующий вставляемый узел - Армин, он печатает
левый
нуль
Однако, когда я пытаюсь распечатать дерево по порядку, мне не хватает имени.
Я попытался вручную распечатать узлы, как при печати, например printf ("% s", node-> data); но я просто получаю ошибку сегментации.
Имена, которые я пытаюсь напечатать: яблоко, кризис, Денис, Локи. Выходные данные: яблоко, крист, локи. Это всегда пропускает Деннис.
bstNode* insertNode(bstNode *root, char *data){
if(root == NULL){
printf("null, %s\n", data);
root = newNode(data);
return;
}
else if(wordSort(root->data, data) == -1){
printf("right, %s\n", data);
root->right = insertNode(root->right, data);
}
else if(wordSort(root->data, data) == 1){
printf("left, %s\n", data);
root->left = insertNode(root->left, data);
}
}
void printTree(bstNode *node){
//printf("%s\n", node->left->data);
//printf("%s\n", node->data);
//printf("%s\n", node->right->data);
//printf("%s\n", node->right->right->data);
if (node == NULL)
return;
printTree(node->left);
printf("%s\n", node->data);
printTree(node->right);
}
bstNode* newNode(char *data){
bstNode* newnode = (bstNode*)malloc(sizeof(bstNode));
newnode->data = (char*)malloc(100 * sizeof(char));
strcpy(newnode->data, data);
newnode->left = NULL;
newnode->right = NULL;
strcpy(newnode->data, data);
newnode->count = 1;
return newnode;
}