鏈式儲存結構
二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。
通常的方法是鍊錶中每個結點由三個域組成,資料域和左右指標域,左右指標分別用來給出該結點左孩子和右孩子所在的鏈結點的儲存位址。其結點結構為:
其中,data域存放某結點的資料資訊;lchild與rchild分別存放指向左孩子和右孩子的指標,當左孩子或右孩子不存在時,相應指標域值為空(用符號∧或null表示)。利用這樣的結點結構表示的二叉樹的鏈式儲存結構被稱為二叉鍊錶,如圖5-8所示。
(a) 一棵二叉樹 (b) 二叉鍊錶儲存結構
圖5-8 二叉樹的二叉鍊錶表示示意圖
為了方便訪問某結點的雙親,還可以給鍊錶結點增加乙個雙親欄位parent,用來指向其雙親結點。每個結點由四個域組成,其結點結構為:
這種儲存結構既便於查詢孩子結點,又便於查詢雙親結點;但是,相對於二叉鍊錶儲存結構而言,它增加了空間開銷。利用這樣的結點結構表示的二叉樹的鏈式儲存結構被稱為三叉鍊錶。
圖5-9給出了圖5-8 (a)所示的一棵二叉樹的三叉鍊錶表示。
圖5-9二叉樹的三叉鍊錶表示示意圖
儘管在二叉鍊錶中無法由結點直接找到其雙親,但由於二叉鍊錶結構靈活,操作方便,對於一般情況的二叉樹,甚至比順序儲存結構還節省空間。因此,二叉鍊錶是最常用的二叉樹儲存方式。
結構5-2二叉樹的鏈式儲存
(樹) 二叉樹鍊錶表示
1.二叉樹新節點的插入 create root,val class node def init self self.data 0 self.left none self.right none def create root,val newnode node newnode.data val newn...
二叉樹 二叉鍊錶
include using namespace std typedef char elemtype int n 0 typedef struct binode binode class bitree bitree binode getroot void preorder binode root 前序...
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...