Мне нужно вставить строки в двоичное дерево поиска, но каждый из них запускает мою функцию вставки, обновляет все узлы, а не только соответствующую. Необходимо, чтобы каждое слово, помещенное в двоичное дерево поиска, имело точный объем выделенной памяти (+1 для указателя NULL).Вставка строки в двоичное дерево поиска C
Вот структура используется:
typedef struct node_t{
char *word;
struct node_t *left, *right;
} node_t;
Вот как я передаю в слове:
for(i=0; i< original_words -1; i++)
{
fscanf(ifp, "%s", y);
head = insert(head, y);
}
И вот моя вставка функция:
node_t *insert(struct node_t *head, char *word)
{
if(strcmp(head->word, word) > 0)
{
if(head->left == NULL)
{
head->left = create_node(word);
}
else
{
head->left = insert(head->left, word);
}
}
else
{
if(head->right == NULL)
{
head->right = create_node(word);
}
else
{
head->right = insert(head->right, word);
}
}
return head;
}
EDIT: Херес пример входного файла.
4
-------
bravo
-------
alpha
-------
gamma
-------
delta
Что происходит, когда 'strcmp (head-> word, word) == 0'? Вы должны справиться с этим делом конкретно ... –
Сегодня что-то происходит с вставкой в BST. Клянусь Богом, я видел сегодня 5 подобных вопросов. Это день BST в каком-то колледже? – 2013-04-10 20:04:51
@VladLazarenko Вы также можете быть верны на этом. – 2013-04-10 20:12:00