二叉樹鏈式儲存操作

2021-08-20 22:43:34 字數 1725 閱讀 1752

前言

二叉樹的儲存結構

1.二叉樹的順序儲存結構

利用性質5,對於完全二叉樹可以利用一維陣列儲存,如果不是完全二叉樹,則可以補空節點,使成為完全二叉樹在進行儲存,

但是對於非完全二叉樹,可能要浪費很多的空間。

2.二叉樹的鏈式儲存結構

二叉樹的鏈式儲存結構就是用指標建立二叉樹中節點之間的關係,二叉樹最常用的鏈式儲存結構是二叉鏈。二叉樹的二叉鏈儲存結構是一種常用的

二叉樹儲存結構。二叉鏈存儲存結構的優點時,結構簡單,可以方便的構造任何形狀的二叉樹,並可以方便的實現二叉樹的大多數操作。

二叉鏈儲存結構的缺點是,查詢當前節點的雙親節點操作實現比較麻煩。

code

#include#include#includetypedef char date;

typedef struct chaintree

chaintree;

void oper(chaintree *p)

//清除

void chaintreeclear(chaintree *bt)

return ;

}//查詢

chaintree *bintreefind(chaintree *bt,date date)

else

else if(p=bintreefind(bt->right,date))

else

return null; }}

//新增

int chainadd(chaintree *bt,chaintree *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;

}//總新增

int chaintreeadd(chaintree *bt)

printf("1.新增到左子樹\n2.新增到右子樹\n");

dowhile(select!=1&&select!=2);

} return ;

}//初始化

chaintree *chaininit()

return null;

}//求長度

int chainlen(chaintree *bt)

else

}//先序遍歷

void bintreex(chaintree *bt,void(*oper)(chaintree *p))

}//中序遍歷

void bintreez(chaintree *bt,void(*oper)(chaintree *p)) }

//後序遍歷

void bintreeh(chaintree *bt ,void( * oper)(chaintree *p))

}int main()

}chaintreeclear(root);

root=null;

return 0;

}

二叉樹的鏈式儲存

實現二叉樹的基本操作 建立 遍歷 計算深度 結點數 葉子數等。輸入c,先序建立二叉樹,表示空節點 輸入h 計算二叉樹的高度 輸入l 計算二叉樹的葉子個數 輸入n 計算二叉樹節點總個數 輸入1 先序遍歷二叉樹 輸入2 中序遍歷二叉樹 輸入3 後續遍歷二叉樹 輸入f 查詢值 x的節點的個數 輸入p 以縮...

二叉樹鏈式儲存結構

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

二叉樹鏈式儲存結構

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