層次關係結構 樹 二叉樹

2021-08-20 09:22:41 字數 1400 閱讀 7639

//二叉樹操作

//定義鏈式結構

#include#include#define queue_maxsize

typedef char data; //定義元素型別

typedef struct chaintree

chainbintree;

//初始化二叉樹

chainbintree *bintreeinit(chainbintree *node) //初始化二叉樹根節點

//新增資料到二叉樹,首先使用bintreeinit()函式建立二叉樹根節點,然後使用bintreeaddnode()新增結點到二叉樹

//新增資料到二叉樹,bt為父結點,node為子結點,n=表示新增左子樹,n=2表示新增右子樹

int bintreeaddnode(chainbintree *bt,chainbintree *node,int n)

switch(n)

else

bt->left=node;

break;

case 2: //新增到右結點

if(bt->right) //右子樹不為空

else

bt->right=node;

break;

default:

printf("引數錯誤!\n");

return 0;

} return 1;

}//分別獲取二叉樹的左右子樹

chainbintree *bintreeleft(chainbintree *bt) //返回左子結點

chainbintree *bintreeright(chainbintree *bt) //返回右子結點

//獲取二叉樹的狀態,即判斷二叉樹是否為空和計算深度

int bintreeisempty(chainbintree *bt) //檢查二叉樹是否為空,為空則返回1,否則返回0

int bintreedepth(chainbintree *bt) //求二叉樹深度

}/*進行查詢操作,即再二叉樹中查詢資料,此時需要遍歷二叉樹的所有結點,

逐個比較資料,當找到目標資料時將返回該資料所在結點的指標*/

chainbintree *bintreefind(chainbintree *bt,data data) //在二叉樹中查詢值為data的結點 }}

/*清空二叉樹

在新增結點時,通過使用malloc()函式來申請分配每個結點的記憶體,

所以在清空二叉樹時必須使用free()函式來釋放結點所佔記憶體。

由此可見,清空二叉樹的操作就是釋放各結點所佔記憶體的操作。*/

void bintreeclear(chainbintree *bt)

return ;

}

層次遍歷二叉樹

問題 假定根節點位於第0層 1.層次遍歷二叉樹 每層換行分開 2.層次遍歷二叉樹指定的某層 本文 例如 上圖中1.123 4567 82.第三層 78可以看出得出第二問的解,第一問迎刃而解了,所以從問題二下手 1.層次遍歷二叉樹指定的某層 可以得出這樣的乙個結論 遍歷二叉樹的第k層,相當於遍歷二叉樹...

二叉樹層次遍歷

題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路 二叉樹的層次遍歷,利用棧的先進後出的特性。struct treenode class solution res.push back temp while m.empty m中是從左往右入棧,這裡把它反過來,s中是從右往左...

二叉樹層次遍歷

層次遍歷二叉樹,每一次儲存在list中,結果按從葉子層到根,從左到右的順序儲存 一 class solution return lists 相當於在先序的基礎上改進,level是每個node所在的層次。如果lists大小和level相等,說明開始新一層的儲存。如果不等,則直接把值存入相應層次的lis...