這一段時間學了樹(二叉樹),感覺樹的內容很難,內容比較難弄懂,所以還是得花時間去理解,總之要學起來真的不容易。在老師的課上跟著老師走對於樹概念和一些操作有了一定的理解(實際上理解透的卻沒有),自己下來實操**還是對於我來說有點難不會做。樹有二叉樹,哈夫曼樹等等的特殊結構的樹,遍歷的方式也是多種多樣(中序遍歷,先序遍歷、後序遍歷、層次遍歷)。在樹這一章,因為要建樹遞迴的用法真的是太常見了所以是重中之重,遞迴方面的內容,只能硬背下來了。
7-1 還原二叉樹 (25 分)
函式宣告:int cnt(char *preorder, char *inorder, int n);
a:部分正確
b:樹的每一層記錄值多了1
b:沒有考慮到層次為0,t的值的問題
公共祖先結點一定在這兩條路徑上,且在最靠後的位
置,在對比倒著挨個查詢就能得到結果。我們可以用2個棧來儲存這兩個結點的路徑,每當遇到乙個結點,我們就先將這個結點
先入棧,然後檢視這個結點是否是
我們最終要找的那兩個結點,如果是,則當前棧裡的結點順序就是我們想要的路
徑,結束查詢,如果不是,遞迴的去該結點的左子樹和右子樹里查詢,如果都沒
有找到,說明以該子樹沒有我們想要的結點,自然它肯定不在最終路徑上,將其
出棧即可
對於二叉樹,二叉樹的各個層和葉子節點,本題將二叉樹的節點順序化,這樣的好處就是祖先更加明確;
運用棧和佇列來輔助樹的操作可以讓操作更加簡單
DS部落格作業05 樹
通過這次對樹的學習,這是第一次學習非線性結構的資料結構,之前都是學線性的,感覺有點不習慣,做題之後 感覺線性和非線性的區別也就是遍歷的方法不一樣,以前線性結構遍歷都是用迴圈,到了非線性結構遍歷則都是 用遞迴。樹結構我覺得就分為兩種多叉樹和二叉樹,二叉樹結構體都是用左右孩子,而多叉樹結構體都是孩子和 ...
DS部落格作業05 樹
說明 由於在日常提交列表中除錯過程以及碰到的問題不太明顯,所以將上機考試中的困難點列出輸入一行中綴表示式,轉換一顆二叉表示式樹,並求解.建立二叉表示式樹 建立字元棧op 樹根棧tree op.push 遍歷 str i if 是數字 依次存入樹根棧內 if 是符號 判斷 str i 與 op棧頂的優...
DS部落格作業05 樹
感覺樹的內容很難,一些邏輯比較難弄懂,而且內容比較多,所以還是得花時間去理解,樹不比先前的那些線性結構,多了很多新東西,比如帶權路徑長度,哈弗曼編碼什麼的,總之要學起來真的不容易。觀察表示式樹會發現數字字元的左孩子右孩子都是空的用於後面的表示式樹的運算 建立兩個棧乙個是樹節點的儲存型別乙個是字元儲存...