![](https://cos-cdn.shuashuati.com/pipixue-web/2020-1231-2005-12/ti_inject-812ce.png)
阅读下列函数说明、图和C代码,回答问题 [说明] 在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都要画出与单词列表所对应的单词查找树。 程序构造一棵二叉排序树,每个节点存储一个单词,按字典序列,较小的在,较大的在右子树。 函数中使用的预定义符号如下: typedef struct TreeNode{/*二叉排序树节点*/ char *word; struct TreeNode *left, *right; }BNODE; [函数] int getWord(FILE *fpt, char *word) /*从文件fpt中读取单词到word中,到达文件结束时返回0*/ { char c; c = fgetc(fpt); if(c == EOF)return 0; /*跳过单词间的非字母字符*/ while(!(tolower(c) >= 'a' && tolower(c) <= 'z')){ c = fgetc(fpt); if(c == EOF)return 0; } /*不区分大小写*/ while(tolower(c) >= 'a' && tolower(c) <= 'z'){ *word++ = c; c = fqetc(fpt); } *word = '/0'; return 1; } void BTree(BNODE **t, char *word) { BNODE *ptr, *p; int compres; p = NITLL; (1) ; while(ptr){ compres = strcmp(word, (2) ); if(!compres){ return; }else{ (3) ; ptr = compres > 0 ? ptr->right : ptr->left; } } ptr = (BNODE*)malloc(sizeof ptr); ptr->left = ptr->right = NULL; ptr->word = (char*)malloc(strlen(word) + 1); strcpy(ptr->word, word); if(p == NULL){ (4) ; }else if(compres > 0){ p->right = ptr; }else{ p->left = ptr; } } int main() { FILE *fpt; char word[40]; BNODE *root = NULL; if((fpt = fopen('text.in', 'r')) == NULL){ printf('不能打开文件text.in! /n'); return 1; } while(getWord(fpt, word) == 1){ BTree (5) ; } fclose(fpt); return 0; }