版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第C語言數(shù)據(jù)結(jié)構(gòu)詳細(xì)解析二叉樹的操作目錄二叉樹分類二叉樹性質(zhì)性質(zhì)的使用二叉樹的遍歷前序遍歷中序遍歷后序遍歷層序遍歷求二叉樹的節(jié)點(diǎn)數(shù)求二叉樹葉子結(jié)點(diǎn)個(gè)數(shù)求二叉樹的最大深度二叉樹的銷毀
二叉樹分類
滿二叉樹
除最后一層無任何子節(jié)點(diǎn)外,每一層上的所有結(jié)點(diǎn)都有兩個(gè)子結(jié)點(diǎn)的二叉樹。也可以理解為每一層的結(jié)點(diǎn)數(shù)都達(dá)到最大值的二叉樹。
完全二叉樹
一棵深度為k的有n個(gè)結(jié)點(diǎn)的二叉樹,對樹中的結(jié)點(diǎn)按從上至下、從左到右的順序進(jìn)行編號,如果編號為i(1in)的結(jié)點(diǎn)與滿二叉樹中編號為i的結(jié)點(diǎn)在二叉樹中的位置相同,則這棵二叉樹稱為完全二叉樹。
簡單的說,完全二叉樹就是最后一層可以有缺失的滿二叉樹(完全二叉樹是一種特殊的滿二叉樹),并且是從右往左的缺失。
二叉樹性質(zhì)
若規(guī)定根節(jié)點(diǎn)的層數(shù)為1,則一棵樹非空二叉樹的第i層上最多有2^(i-1)個(gè)節(jié)點(diǎn)。若規(guī)定根節(jié)點(diǎn)層數(shù)為1,則深度為h的二叉樹的最大節(jié)點(diǎn)數(shù)是2^h1對任何一顆二叉樹,如果葉節(jié)點(diǎn)(度為0的節(jié)點(diǎn))個(gè)數(shù)為n0,度為2的節(jié)點(diǎn)個(gè)數(shù)為n2,則n0=n2+1。若規(guī)定根節(jié)點(diǎn)層數(shù)為1,具有N個(gè)節(jié)點(diǎn)的滿二叉樹的深度為小于(log_2)?N+1的最大整數(shù)。
性質(zhì)的使用
在具有2n個(gè)結(jié)點(diǎn)的完全二叉樹中,葉子結(jié)點(diǎn)個(gè)數(shù)為()
An
Bn+1
Cn-1
Dn/2
分析:
設(shè)度為0的結(jié)點(diǎn)有x0個(gè)
設(shè)度為1的結(jié)點(diǎn)有x1個(gè)
設(shè)度為2的結(jié)點(diǎn)有x2個(gè)
x0+x1+x2=2n
x0=x2+1
由上面兩個(gè)式子可推出:2*2x2+x1+1=2n
因?yàn)槭峭耆鏄?,x1可能是0,1,但是要使上式結(jié)果為偶數(shù),x1只能是1,所以x2等于n,選A。
二叉樹的遍歷
首先我們先創(chuàng)建一個(gè)簡單的二叉樹
typedefcharBTDataType;
typedefstructBinaryTreeNode{
structBinaryTreeNode*left;
structBinaryTreeNode*right;
BTDataTypedata;
}BTNode;
intmain()
BTNode*A=(BTNode*)malloc(sizeof(BTNode));
A-data='A';
A-left=NULL;
A-right=NULL;
BTNode*B=(BTNode*)malloc(sizeof(BTNode));
B-data='B';
B-left=NULL;
B-right=NULL;
BTNode*C=(BTNode*)malloc(sizeof(BTNode));
C-data='C';
C-left=NULL;
C-right=NULL;
BTNode*D=(BTNode*)malloc(sizeof(BTNode));
D-data='D';
D-left=NULL;
D-right=NULL;
BTNode*E=(BTNode*)malloc(sizeof(BTNode));
E-data='E';
E-left=NULL;
E-right=NULL;
A-left=B;
A-right=C;
B-left=D;
B-right=E;
LevelOrder(A);
}
前序遍歷
前序(先序):根-左子樹-右子樹
預(yù)期結(jié)果:ABDEC
//前序
voidPrevOrder(BTNode*root)
if(root==NULL)
//為了結(jié)果更加直觀,將NULL打印
printf("NULL");
return;
//先打印根的數(shù)據(jù)
printf("%c",root-data);
//遍歷左子樹
PrevOrder(root-left);
//遍歷右子樹
PrevOrder(root-right);
編譯結(jié)果:
中序遍歷
中序:左子樹-根-右子樹
預(yù)期結(jié)果:DBEAC
voidMidOrder(BTNode*root)
//為了結(jié)果更加直觀,將NULL打印
if(root==NULL)
printf("NULL");
return;
MidOrder(root-left);
printf("%c",root-data);
MidOrder(root-right);
編譯結(jié)果:
后序遍歷
后續(xù):左子樹-右子樹-根
預(yù)期結(jié)果:DEBCA
voidPostOrder(BTNode*root)
if(root==NULL)
printf("NULL");
return;
PostOrder(root-left);
PostOrder(root-right);
printf("%c",root-data);
編譯結(jié)果:
層序遍歷
voidLevelOrder(BTNode*root)
//創(chuàng)建隊(duì)列q
Queueq;
//初始化隊(duì)列
QueueInit(
//如果根結(jié)點(diǎn)不為空,將根節(jié)點(diǎn)入隊(duì)列
if(root)QueuePush(q,root);
//進(jìn)行循環(huán),直到隊(duì)列為空
while(!QueueEmpty(q))
//獲取隊(duì)列的第一個(gè)數(shù)據(jù),并打印
QDataTypefront=QueueFront(
printf("%c",front-data);
//對頭數(shù)據(jù)出隊(duì)列
QueuePop(
//如果左子樹不為空,左子樹入隊(duì)列
if(front-left!=NULL)
QueuePush(q,front-left);
//如果右子樹不為空,右子樹入隊(duì)列
if(front-right!=NULL)
QueuePush(q,front-right);
}
求二叉樹的節(jié)點(diǎn)數(shù)
intBTSize(BTNode*root)
returnroot==NULL0:1+BTSize(root-left)+BTSize(root-right);
求二叉樹葉子結(jié)點(diǎn)個(gè)數(shù)
intBTLeafSize(BTNode*root)
if(root==0)return0;
returnroot-left==NULLroot-right==NULL1:BTLeafSize(root-right)+BTLeafSize(root-left);
求二叉樹的最大深度
intmaxDepth(BTNode*root)
if(root==NULL)
return0;
return1+fmax(maxDepth(root-left),maxDepth(root-right));
二叉樹的銷毀
//二叉樹的銷毀
//傳
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)戰(zhàn)略規(guī)劃與執(zhí)行管理(標(biāo)準(zhǔn)版)
- 城市公共交通設(shè)施維護(hù)與管理手冊(標(biāo)準(zhǔn)版)
- 企業(yè)信息化培訓(xùn)管理手冊(標(biāo)準(zhǔn)版)
- 廢舊物資處置流程制度
- 企業(yè)信息化培訓(xùn)管理規(guī)范(標(biāo)準(zhǔn)版)
- 四川能投高縣綜合能源有限公司2025年招聘工作人員備考題庫及完整答案詳解1套
- 養(yǎng)老院工作人員培訓(xùn)考核評價(jià)制度
- 原平市2025年公開招聘社區(qū)專職工作人員備考題庫帶答案詳解
- 2026年瀘州市人民南路幼兒園招聘備考題庫及答案詳解1套
- 2026年閩南師范大學(xué)引進(jìn)高層次人才招聘97人備考題庫及一套答案詳解
- 廣告行業(yè)法律法規(guī)與行業(yè)規(guī)范(標(biāo)準(zhǔn)版)
- 高中數(shù)學(xué)選擇性必修一課件第一章 空間向量與立體幾何章末復(fù)習(xí)(人教A版)
- 標(biāo)準(zhǔn)商品房買賣合同文本大全
- LY/T 3408-2024林下經(jīng)濟(jì)術(shù)語
- 2025年湖南邵陽市新邵縣經(jīng)濟(jì)開發(fā)區(qū)建設(shè)有限公司招聘筆試參考題庫附帶答案詳解
- ICH《M10:生物分析方法驗(yàn)證及樣品分析》
- 國家開放大學(xué)電大24210丨學(xué)前兒童科學(xué)教育活動(dòng)指導(dǎo)(統(tǒng)設(shè)課)期末終考題庫
- 教育培訓(xùn)班項(xiàng)目可行性研究報(bào)告
- 人參健康食品營銷策劃
- 2024年人參項(xiàng)目營銷策劃方案
- 工會(huì)職工大會(huì)制度實(shí)施細(xì)則范本
評論
0/150
提交評論