數據結構——二叉樹的實現

關於二叉樹的實現的隨便幾點~~~~
(1) 如何基於左子結點/右兄弟結點表示法實現二叉樹?
分析及解決:對於基於左子結點/右兄弟結點表示法實現二叉樹,可以建立如圖所示的關係表,通過數組進行物理實現,基於數組中對應的下標構建關係。
在這裏插入圖片描述

(2)遍歷操作算作基本操作還是應用?
分析及解決:對於遍歷操作在二叉樹中,即可以屬於基本操作,也可以算作應用。但要注意的是:在歸爲基本操作時,基本操作內不能出現 I/O 流的操作,所以存在較多的限制,當把遍歷操作歸於應用時,可以直接寫在 demo 主程序中,不需要拘於這種限制,實現起來比較簡單。

(3)基於左子結點/右兄弟結點表示法實現的二叉樹如何遍歷?
分析及解決:基於左子結點/右兄弟結點表示法實現二叉樹的遍歷可以通過遞歸進行遍歷,也可以利用非遞歸的方法實現。例如在實際的實現過程中,考慮到設計的精簡性,基於左子結點/右兄弟結點表示法實現二叉樹的前序遍歷、中序遍歷和後序遍歷採用遞歸實現,具體實現與二叉鏈表樹類似,而層次遍歷,在構建二叉樹時通過層序遍歷順序輸入、數組儲存進行,於是層序遍歷只需要將數組從頭到尾遍歷即可,於是採用了非遞歸的方法。

實驗心得
實驗設計比較完善,按照實驗要求進行了基於左子結點/右兄弟結點表示法和二叉鏈表 來實現二叉樹 ADT 及 demo 程序的設計,完成了實驗目的。在剛開始的實驗中,我把遍歷操 作歸於二叉樹的基本操作,但在基本操作實現的過程中,直接使用 I/O 流進行了輸入和輸 出,後來發現這樣是不正確的,於是在原來的基礎上進行了修改,將遍歷操作歸於應用操 作,直接在主程序中進行實現,這樣就打破了諸多的限制,實現起來也比較簡單。完成之 後思考發現,其實將遍歷操作歸於基本操作,可以使用 visit 函數進行。

具體代碼實現:
數據結構——二叉樹的實現 (包含二叉鏈表和左子右兄弟兩種實現方法)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章