二叉樹是電腦科學中最基礎且重要的非線性資料結構之一。本文提供一個完整的C語言實現範例,涵蓋節點定義、樹的建立、四種遍歷方式(先序、中序、後序、葉子節點)、圖形化顯示以及記憶體釋放等核心操作。適合資料結構初學者參考學習。
首先定義二叉樹節點結構,包含資料欄位與左右子節點指標:
typedef struct BiNode {
char Data;
struct BiNode* lChild;
struct BiNode* rChild;
} BiNode, *pBiNode;
搭配狀態碼常數:OK、ERROR、OVERFLOW 等,方便函數回傳執行狀態。
CreateTree 採用「預序序列 + # 代表空節點」的方式遞迴建樹。輸入範例 abd##e##cf##g## 可建立一棵完整二叉樹。程式碼採用雙重指標 BiNode** 以便在函數內修改根節點指標。
所有遍歷函數均採用遞迴實現,並透過 Visit() 回呼函數輸出節點資料,體現關注點分離原則。
Display() 以縮排方式將樹結構以 90 度旋轉形式列印於終端機,直觀展示層級關係。DelTree() 採用後序遍歷釋放節點記憶體,避免記憶體洩漏,並列印刪除過程供除錯參考。
main() 函數完整串聯:建樹 → 三種遍歷輸出 → 顯示葉子 → 圖形化列印 → 釋放記憶體。編譯執行後可觀察完整生命週期。
完整原始碼已包含於本文,可直接複製編譯執行(建議使用支援 C99 的編譯器,並移除 conio.h 相關函數以提升跨平台相容性)。