>>561
いつも指摘してくれてありがとうございます。

>> Node root={"\0",0, NULL, NULL};
>空の単語も全部これにカウントすることになるが、それは意図的なもの?
>Node *root = NULL;でnodeは要らないはず。

addNode()で返ってきたものを逐一Nodeに再代入して使っているので、
ルートの位置を保存しておく(あとでTraverseNode()で使う)ためにnodeを宣言していました。
だからnodeをなくすとルートの位置が保存できなくなると思うのですが。

>> while ((c=fgetc(fp))!=EOF || j<=MAXWORD){
>charとEOFの比較はうまくいかないし、jがMAXWORDにいっても終らん。

これは…いままでおもいっきり while ((c=getchar())!=EOF) なんていう式を使っていたので
それに倣っていました。でもEOFは0か1を返すのでcharと比較しても大丈夫なような…。

>> ptr[j]=(char *)malloc(sizeof(char)*i); /*単語を格納するための場所確保*/
>> strcpy((char *)*ptr[j], temp); /*確保した場所に単語を格納*/
>ターミネータの分を忘れてる。このptr自体不要だと思うが。
>二分木に貯め込むってのに、別に配列に取っておく必要はないだろう。

ターミネータ('¥0'ですよね?)は忘れていました。
ptrは…。ちょっと理解するのが難しいのでじっくり考えます。ノードのなかにポインタがあるから、
それを使えば他のノードも指せるということですよね。(ptrを使わなくても)

夜中に少しソースを改訂させます。