二叉樹儲存方式 二叉鍊錶

2021-09-30 15:50:25 字數 1256 閱讀 9510

二叉樹一般有兩種儲存方式:(1)陣列方式(2)鍊錶方式

(1)陣列儲存方式

上面兩個二叉樹對應的鍊錶儲存為:

我們採用層序遍歷的方式將二叉樹各個節點進行編號(這裡的編號我們是把二叉樹均看成滿二叉樹進行編號的,這樣編號的好處是方便我們根據編號輕鬆定位節點位置),並將節點資料存放在對應編號下。

我們可以看出對於滿二叉樹(就是除了葉結點外每乙個結點都有左右子葉且葉結點都處在最底層的二叉樹)。是很適合用陣列儲存的,但是對於非滿二叉樹,如果我們用陣列方式存放就會浪費儲存空間。如果二叉樹非常龐大,這部分的浪費將是巨大的。所以一般情況下,我們更普遍的採用鏈式儲存結構儲存二叉樹。

(2)二叉樹鍊錶

二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。

其中,data域存放某結點的資料資訊;lchild與rchild分別存放指向左孩子和右孩子的指標,當左孩子或右孩子不存在時,相應指標域值為空(用符號∧或null表示)。利用這樣的結點結構表示的二叉樹的鏈式儲存結構被稱為二叉鍊錶。如下圖所示:

為了方便訪問某結點的雙親(節點的子節點和父節點),還可以給鍊錶結點增加乙個雙親欄位parent,用來指向其雙親結點。每個結點由四個域組成,其結點結構為:

這種儲存結構既便於查詢孩子結點,又便於查詢雙親結點;但是,相對於二叉鍊錶儲存結構而言,它增加了空間開銷。利用這樣的結點結構表示的二叉樹的鏈式儲存結構被稱為三叉鍊錶。如下圖所示:

二叉鍊錶結構靈活,操作方便,對於一般情況的二叉樹,甚至比順序儲存結構還節省空間。因此,二叉鍊錶是最常用的二叉樹儲存方式。

struct  bintreenode   //定義節點由資料域,左右指標組成

bitree;

二叉鍊錶儲存二叉樹

鏈式儲存結構 二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。其中,data域存放某結點的資料資訊 lchild與rchild分別存放指向左孩子和右孩子的指標,當左孩子或右孩子不存在時,相應指標域值為空 用符號 或null表示 利用這樣的結點結構表示的二叉樹的鏈式儲存結...

二叉鍊錶儲存二叉樹

鏈式儲存結構 二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。其中,data域存放某結點的資料資訊 lchild與rchild分別存放指向左孩子和右孩子的指標,當左孩子或右孩子不存在時,相應指標域值為空 用符號 或null表示 利用這樣的結點結構表示的二叉樹的鏈式儲存結...

二叉鍊錶儲存的二叉樹

樹形結構是一類重要的非線性資料結構,其中以樹和二叉樹最為常用。對於每乙個結點至多只有兩課子樹的一類樹,稱其為二叉樹。二叉樹的鏈式儲存結構是一類重要的資料結構,其形式定義如下 而二叉樹的前序 中序遍歷是非常重要的能夠訪問二叉樹所有結點的演算法,下面分別列出一種先序遍歷和兩種中序遍歷的演算法。第一種中序...