1. 程式人生 > >資料結構課上筆記12

資料結構課上筆記12

二叉樹的儲存結構 

 

順序儲存結構

 

完全二叉樹:用一組地址連續的 儲存單元依次自上而下、自左至右存 儲結點元素,即將編號為 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遍歷、連結串列後半段反轉判斷迴文等等必須進行完,解題時就算已經得出答案也要遍歷完,因為我們不能改變原來的資料結構。)

 

具體遍歷的介紹

https://blog.csdn.net/hebtu666/article/details/82853988