學習筆記【第五章】
Part.A 小結&感悟
想起來在這個學期開始前認識的一個學長曾經對我說過,你們下學期會學到一個叫做二叉樹的東西,當年我可是飽受折磨啊……
學習之前一直以為是很難理解的一個東西,但是現在發現這一章的知識總體來看非常條理和具體,同時二叉樹的數據結構本身確實是存在其難理解的地方的,對於這一章中屢屢出現的遞歸算法,我總是需要花費大量的時間才能夠理解,在想明白之後又開始對人類的智慧產生濃濃的敬佩…
關於這裏大量的概念和術語,我這裏簡單做了一點整理,
Part B 反思&計劃
在整理知識結構的過程中也順便回想了一遍這些知識和概念,其實這些都是最最基礎的東西,只要理解了就很容易記住,想學好這部分的內容還是需要大量的編程練習,熟練地實現對應的算法,然後加強對於遞歸算法的理解和運用能力。
這一章我印象很深刻的編程題目,深入虎穴,老師上課也進行了詳細的講解,我最開始的想法也是構造二維數組,但是這樣的算法造成了極大的空間浪費(可以利用類似稀疏矩陣的算法節省空間)這是我沒有考慮到的,一個好的程序需要有優秀的空間利用能力,實現效率的最大化,這道題目是一道看似不難實則不容易實現的題目,這也是我的一個問題,光有想法是不行的,需要每一步都能對應實現,就像這道題,在真正上手編程之後屢屢卡住,以後要更加註意思路的梳理。也暴露出我對前面所學知識的綜合利用能力還不強(完全沒想到利用稀疏矩陣……)
遺憾的是,我最終沒能獨立完成這道題的編程,以後還會回頭再來多回顧這道題目的。
Part C 一些想法&疑問
這是我隨手寫的一個小小的遞歸算法
1 void GoThrough(Node T) 2 { 3 if(!EmptyTree T) break; //EmptyTree 判斷樹是否為空 4 GoThrough(T.Lchild); 5 GoThrough(T.Rchild); 6 }
那麽如果把3、4行的內容對換,會造成什麽樣的影響,謝謝老師的解答(我在對遞歸算法的理解上始終不通順,希望老師別介意問題太低級了哈哈哈)
學習筆記【第五章】