DS部落格作業05 樹

2022-05-29 14:12:16 字數 1716 閱讀 8377

樹的學習,從前面的線性結構突然到了非線性結構,感覺更加抽象了,難度也大了不少,對於課本上的概念還有一些演算法,認真預習看書後也還是可以理解,但真的要打pta就感覺是另外一回事了,就算上課聽了老師的思路去打還是有些吃力,有些不知從哪下手

q1:沒有考慮樹為空的情況出現了段錯誤

q2:改了段錯誤後還是有最後乙個測試點不過,後邊認真審題後發現是陣列的大小不夠,題目要求n<=50

bintree creattree(int *lateorder,int *inorder,int n ); //建樹函式;

void printbintree(bintree bt); //輸出函式;

q1:在輸出前面沒加「preorder」,出現各種錯誤,改了之後還是部分正確;

q2:陣列大小不足,最後乙個測試點沒過,把陣列大小改成30就過了

遇到空節點,說明其沒有左右孩子了,而且對應的值為0;遇到一般節點,則由sum直接加上當前節點的值;遇到葉節點,說明遞迴到最底端了,本次的遞迴結束,返回sum

通過這個題目的學習,我更深切體會到了遞迴在樹這一塊的重要性,幾乎處處都有用到遞迴,建樹,遍歷,幾乎每乙個操作都用,而且要根據會遇到不同的情況構造遞迴條件,比如這個題目中在遍歷結點時如何處理空結點,一般結點,葉結點。

DS部落格作業05 樹

通過這次對樹的學習,這是第一次學習非線性結構的資料結構,之前都是學線性的,感覺有點不習慣,做題之後 感覺線性和非線性的區別也就是遍歷的方法不一樣,以前線性結構遍歷都是用迴圈,到了非線性結構遍歷則都是 用遞迴。樹結構我覺得就分為兩種多叉樹和二叉樹,二叉樹結構體都是用左右孩子,而多叉樹結構體都是孩子和 ...

DS部落格作業05 樹

說明 由於在日常提交列表中除錯過程以及碰到的問題不太明顯,所以將上機考試中的困難點列出輸入一行中綴表示式,轉換一顆二叉表示式樹,並求解.建立二叉表示式樹 建立字元棧op 樹根棧tree op.push 遍歷 str i if 是數字 依次存入樹根棧內 if 是符號 判斷 str i 與 op棧頂的優...

DS部落格作業05 樹

感覺樹的內容很難,一些邏輯比較難弄懂,而且內容比較多,所以還是得花時間去理解,樹不比先前的那些線性結構,多了很多新東西,比如帶權路徑長度,哈弗曼編碼什麼的,總之要學起來真的不容易。觀察表示式樹會發現數字字元的左孩子右孩子都是空的用於後面的表示式樹的運算 建立兩個棧乙個是樹節點的儲存型別乙個是字元儲存...