二分探索木に文字列を挿入する必要がありますが、挿入関数を実行するたびに、適切なノードだけでなくすべてのノードが更新されます。二分探索ツリーに配置された各単語には、正確な量のメモリが割り当てられている必要があります (NULL ポインターの場合は +1)。
使用されている構造体は次のとおりです。
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;
}
編集:入力ファイルの例を次に示します。
4
-------
bravo
-------
alpha
-------
gamma
-------
delta