二叉樹實現(xiàn)詞頻統(tǒng)計(不使用指針)

本題知識點:
1.二叉樹插入,這個不使用指針的方法是zzt大佬教我的,很強。
2.qsort以結(jié)構(gòu)體內(nèi)字符串為關鍵字進行字典序排序。
3.提醒,前面字符串處理可以不用看。

先上題目
編寫程序統(tǒng)計一個英文文本文件中每個單詞的出現(xiàn)次數(shù)(詞頻統(tǒng)計),并將統(tǒng)計結(jié)果按單詞字典序輸出到屏幕上。
要求:程序應用二叉排序樹(BST)來存儲和統(tǒng)計讀入的單詞。
注:在此單詞為僅由字母組成的字符序列。包含大寫字母的單詞應將大寫字母轉(zhuǎn)換為小寫字母后統(tǒng)計。在生成二叉排序樹不做平衡處理。
【輸入形式】
打開當前目錄下文件article.txt,從中讀取英文單詞進行詞頻統(tǒng)計。
【輸出形式】
程序應首先輸出二叉排序樹中根節(jié)點、根節(jié)點的右節(jié)點及根節(jié)點的右節(jié)點的右節(jié)點上的單詞(即root、root->right、root->right->right節(jié)點上的單詞),單詞中間有一個空格分隔,最后一個單詞后沒有空格,直接為回車(若單詞個數(shù)不足三個,則按實際數(shù)目輸出)。
程序?qū)卧~統(tǒng)計結(jié)果按單詞字典序輸出到屏幕上,每行輸出一個單詞及其出現(xiàn)次數(shù),單詞和其出現(xiàn)次數(shù)間由一個空格分隔,出現(xiàn)次數(shù)后無空格,直接為回車。
【樣例輸入】
當前目錄下文件article.txt內(nèi)容如下:
"Do not take to heart every thing you hear."
"Do not spend all that you have."
"Do not sleep as long as you want;"
【樣例輸出】
do not take
all 1
as 2
do 3
every 1
have 1
hear 1
heart 1
long 1
not 3
sleep 1
spend 1
take 1
that 1
thing 1
to 1
want 1
you 3
【樣例說明】
程序首先在屏幕上輸出程序中二叉排序樹上根節(jié)點、根節(jié)點的右子節(jié)點及根節(jié)點的右子節(jié)點的右子節(jié)點上的單詞,分別為do not take,然后按單詞字典序依次輸出單詞及其出現(xiàn)次數(shù)。
【評分標準】
通過全部測試點得滿分

通過代碼
總結(jié)
本題是第五次作業(yè)第二題,算是基礎題,但也有很多槽點。
第一:我qsort以結(jié)構(gòu)體內(nèi)的二維數(shù)組為關鍵字進行排序太不熟練。首先第二個參數(shù)隨便寫了個500,實際上qsort不會遇到\0就終止排序,導致最后超出范圍,把0全排前面去了。其次就是cmp函數(shù)不會寫,導致花了很多時間查資料。

第二:低級錯誤,沒有審題,tolower函數(shù)沒寫,沒調(diào)用<ctype.h>庫函數(shù),輸出格式?jīng)]有想好,導致出現(xiàn)格式錯誤,sum少一(本來應該是頂top的),c=getchar!=EOF沒寫括號,freopen函數(shù)使用不熟練。
第三:沒有全局意識,上來就寫,導致后期再改
要好好審題啊(>' ^ ')>