鍊錶和二叉樹

2021-10-06 04:55:52 字數 860 閱讀 2734

鍊錶是離散儲存性結構

常用鍊錶有3類:單鏈表、雙向鍊錶、迴圈鍊錶

陣列是一種連續儲存線性結構,元素型別相同,大小相等。

鍊錶和陣列各自的優缺點:

鍊錶優點:空間沒有限制 、插入刪除元素很快

缺點:訪問速度慢

陣列優點:訪問速度快

缺點:必須事先知道陣列的長度、插入刪除元素很慢、空間有限制

單鏈表由各個記憶體結構通過乙個next指標鏈結在一起組成,每乙個記憶體結構,都存在乙個後繼記憶體結構(鏈尾除外),記憶體結構由資料域和next指標域組成。

二叉樹是樹的一種,每個節點最多具有兩個子樹,即結點的度最大為2(結點度:結點擁有的子樹)。

二叉樹的種類

斜樹:所有結點都只有左子樹或右子樹。

滿二叉樹:所有的分支結點都具有左右結點。

完全二叉樹:如二叉樹的深度為h,除第h層外,其他各層(1~h-1)的結點數都達到最大個數,第h層所有的結點都連續集中在最左邊,這就是完全二叉樹。

二叉樹的一些性質:

二叉樹第 i 層上的結點數目最多為 2^(i-1) (i≥1)

深度為 h 的二叉樹至多有 2^h-1 個結點(h≥1)

包含 n 個結點的二叉樹的高度至少為 log2 (n+1)

在任意一棵二叉樹中,若終端結點的個數為 n0,度為 2 的結點數為 n2,則 n0=n2+1

二叉樹的遍歷方式,一般分為先序遍歷,中序遍歷,後序遍歷。

先序遍歷

​ 先訪問根節點,然後訪問左節點,最後訪問右節點(根->左->右)

中序遍歷

​ 先訪問左節點,然後訪問根節點,最後訪問右節點(左->根->右)

後序遍歷

​ 先訪問左節點,然後訪問右節點,最後訪問根節點(左->右->根)

鍊錶和二叉樹

1.鍊錶 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。相比於線性表順序結構,鍊錶比較方便插入和刪除操作。a.單向鍊錶 單向鍊錶的每乙個結點由儲存資料元素的資料域和指向下乙個結點的指標域組成。b.雙向鍊錶 雙向鍊錶是單鏈表的改進。雙向鍊錶中,結...

二叉樹 二叉鍊錶

include using namespace std typedef char elemtype int n 0 typedef struct binode binode class bitree bitree binode getroot void preorder binode root 前序...

二叉樹(二叉鍊錶實現)

二叉鍊錶結構的二叉樹模型,棧用自己寫的模版,佇列就不了 直接用stl的,不然 太長了 檔案 tree.h include include includeusing namespace std templateclass my stack templateclass node 結點類 node t d...