資料結構課上筆記12
阿新 • • 發佈:2018-12-19
二叉樹的儲存結構
順序儲存結構
完全二叉樹:用一組地址連續的 儲存單元依次自上而下、自左至右存 儲結點元素,即將編號為 i 的結點元 素儲存在一維陣列中下標為 i –1 的分量中。
一般二叉樹:將其每個結點與完 全二叉樹上的結點相對照,儲存在一 維陣列的相應分量中。
最壞情況:樹退化為線性後:
我們要把它“變”成這個大傢伙來存了:
深度為 k 的且只 有 k 個結點的右單支樹需要 長度為2^k-1 的一維陣列。
鏈式儲存結構
lchild和rchild都是指向相同結構的指標
在 n 個結點的二叉連結串列中有 n + 1 個空指標域。
typedef struct BiTNode { // 結點結構
TElemType data;
struct BiTNode *lchild,*rchild;// 左右孩子指標
} BiTNode, *BiTree;
可以多一條指向父的指標。
遍歷二叉樹
順著某一條搜尋路徑巡訪二叉樹中的結點,使 得每個結點均被訪問一次,而且僅被訪問一次
“訪問”的含義很廣,可以是對結點作各種處理, 如:輸出結點的資訊、修改結點的資料值等,但要求這種訪問不破壞原來的資料結構。
(所以有些題目比如morris遍歷、連結串列後半段反轉判斷迴文等等必須進行完,解題時就算已經得出答案也要遍歷完,因為我們不能改變原來的資料結構。)
具體遍歷的介紹