質問: NULL; return p; } void printBtree(BTREE p) { if (p != NULL) { printBtree(p->left); // 左部分木の処理(再帰呼び出し) printf("WORD : %s COUNT : %d\n", p->d, p->count); printBtree( p->right ); // 右部分木の処理(再帰呼び出し) } else printf("p==NULL\n"); return; } void freeBtree(BTREE p) { if (p != NULL) { freeBtree(p->left); // 左部分木の処理(再帰呼び出し) freeBtree( p->right ); // 右部分木の処理(再帰呼び出し) free( p ); } return; } ```
回答: ちょっと見ですが ``` while (fgetc(fp) != EOF){ root = insertNode(root, str); } ``` 1.fgetc()で文字を読み込んでいない 2.この段階でstrのは何が入っているか分からない 3.strに文字列を格納するなら空白が出てくるまで読み込んで、文字列(終端'\0')として渡す必要がある。 [追記] ``` struct node { DATA d; <-これは?これでいいのか? 文字列では? int count; struct node *left; // 左部分木 struct node *right; // 右部分木 }; ``` 文字列と文字との処理が混在しているようですが?