C語言手寫二叉樹(鏈式儲存結構)

2021-10-25 15:24:35 字數 2051 閱讀 2054

二叉樹可以用順序儲存或鏈式儲存兩種結構,順序儲存需要借助一維陣列,然後通過記憶體之間位置找到相應元素,訪問速度和記憶體將會大大提公升。順序儲存結構只適用於完全二叉樹,一般二叉樹不宜用順序表示。下面將著重講解二叉樹的鏈式儲存結構。

鏈式儲存結構提供了二叉樹在計算機內的一種表示方法,稱為二叉鍊錶。

//節點結構體

typedef struct btnode

btnode;

//二叉樹結構體

typedef struct binarytree

binarytree;

void create(binarytree *bt);構造一棵空二叉樹bt

btnode *newnode(char x, btnode *ln, btnode *rn);建立乙個新節點

bool root(binarytree *bt, char *x);判斷二叉樹是否為空,非空通過指標x返回根節點的值

void maketree(binarytree *bt, char e, binarytree *left, binarytree *right);構造二叉樹,根節點的值為e,left和right為左右子樹

// an highlighted block

#include

using namespace std;

typedef struct btnode

btnode;

typedef struct binarytree

binarytree;

//構造一棵空二叉樹

void

create

(binarytree *bt)

//建立乙個新節點

btnode *

newnode

(char x, btnode *ln, btnode *rn)

//判斷二叉樹是否為空,非空通過指標x返回根節點的值

bool root

(binarytree *bt, char *x)

else

}//構造二叉樹,根節點的值為e,left和right為左右子樹

void

maketree

(binarytree *bt, char e, binarytree *left, binarytree *right)

bt->root =

newnode

(e, left-

>root, right-

>root)

; left-

>root =

null

; right-

>root =

null;}

//void

preorder

(btnode *t)

//先序遍歷二叉樹

二叉樹鏈式儲存結構

由二叉樹定義得知,二叉樹的結點由乙個元素和分別指向其左 右子樹的兩個分支構成,則表示二叉樹的鍊錶中的結點至少包含3個域,如下圖。二叉樹建立 程式是如何建立出二叉樹的?以下圖為例 從主函式開始執行 定義乙個bitnode型別的指標root,將指標root的位址賦給t t是乙個bitnode型別指標的指...

二叉樹鏈式儲存結構

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

二叉樹的鏈式儲存結構(線索二叉樹)

一 鏈式儲存結構 由於順序儲存二叉樹的空間利用率較低,因此二叉樹一般都採用鏈式儲存結構,用鍊錶結點來儲存二叉樹中的每個結點。在二叉樹中,結點結構通過包括若干資料域和若干指標域,二叉鍊錶至少包含3個域 資料域 data 左指標域 lchild和右指標域 rchild,如下圖所示 其中,n 個結點的二叉...