![數(shù)據(jù)結構二叉樹的生成和遍歷_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/5/ff420886-13a3-4102-9e73-4e5de425af4e/ff420886-13a3-4102-9e73-4e5de425af4e1.gif)
![數(shù)據(jù)結構二叉樹的生成和遍歷_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/5/ff420886-13a3-4102-9e73-4e5de425af4e/ff420886-13a3-4102-9e73-4e5de425af4e2.gif)
![數(shù)據(jù)結構二叉樹的生成和遍歷_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/5/ff420886-13a3-4102-9e73-4e5de425af4e/ff420886-13a3-4102-9e73-4e5de425af4e3.gif)
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、6、二叉樹的生成建立一個二叉樹是指在內(nèi)存中建立二叉樹的存儲結構, 這里討論建立一個二 叉鏈表的方式生成一個二叉樹。 要建立一個二叉鏈表, 需按照完全二叉樹的層次 順序,依次輸入結點信息建立二叉鏈表。 對于一般的二叉樹, 必須添加一些虛結 點,使其成為完全二叉樹。我用 表示虛結點, #表示輸入結束標志。同時設置一 個隊列,隊列是一個指針類型的數(shù)組, 保存已輸入的結點的地址。 根據(jù)對為指針 奇偶數(shù)的判斷, 來決定把字符放到左結點還是有結點中, 這樣就能生成想要的二 叉樹。#define maxsize 100#include “ stdio.h ”#include “ malloc.h ”#def
2、ine NULL 0typedef struct btnodechar data;struct btonde lchild,rchild;Btree;Btree*Qmaxsize;Btree*creatree()char ch;int front,rear;Btree *t,*s;t=NULL;front=1;rear=0;ch=getchar();while(ch!= '#')s=NULL;if(ch!= ' ')s=(btree*)mlloc(sizcof(btree);s->data=ch; s->lchild=NULL; s->rchi
3、ld=NULL; rear+;Qrear=s;if(rear=1)T=s;elseif(s&&Qfront)If(rear%2=0)Qfront->lchild=s;ElseQfront->rchild=s; if(rear%2=1)front+; ch=getchar(); returnT;二叉樹的遍歷上面雖然已經(jīng)生成二叉樹,但實際上用戶生成的二叉樹是抽象,用戶并不太 確信已經(jīng)生成的二叉樹是否是自己想要的, 于是,可以編制輸出程序進一步驗證 這個已經(jīng)存在的二叉樹的正確性。二叉樹的遍歷就是對二叉樹的每一個結點訪問一次且僅訪問一次。 我們通過 二叉樹的序遍歷的非遞歸算
4、法來驗證其正確性。 二叉樹非遞歸遍歷是用顯示棧來 存儲二叉樹的結點指針。1、先序遍歷 使用一個棧,首先將根結點入棧,開始循環(huán);從棧中退出當前結點,先訪 問它,然后將其右結點入棧,再將其左結點入棧,如此直到棧空為止。Void porder(Btree*T) Btree*stackmaxsize,*p;int top=-1; if(T!=NULL)top+;stacktop=T; while(top>-1) p=stacktop;top-;prinft( “ %c”,p->data); if(p->right!=NULL)top+;stacktop=p->left;2、后序
5、遍歷 先將根結點的所有左結點并入棧,出棧一個結點,將該結點的右結點入棧, 再將該結點的左結點入棧, 當一個結點的左右子樹均訪問該結點, 如此,直到棧 空為止。void pmorder(Btree*T)Btree*stackmaxsize,*p;int top=-1;dowhile(T)top+;stacktop=T;T=T->left;p=NULL;flag=1;while(top!=-1 &&flag)T=stacktop;ift->right=pprintf( “ %c”,T->data);top+;p=T;elseT=T->right;flag=0;while(top!=-1);中序遍歷先將根結點的所有左結點并入棧 ,出棧一個結點 ,訪問該結點 ,將該結點的右 結點入棧 ,再將該結點的左結點入棧 , 當一個結點的左子樹均訪問后再訪問該結 點,最后訪問右結點 . 如此,直到??諡橹?。Void psorder(btree*T)Btree*stackmaxsize,*p;int top=-1;dowhile(T)top+;stacktop=T;T=T->left;T=stacktop;printf( “ %c”,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球活塞連桿套件行業(yè)調(diào)研及趨勢分析報告
- 家電維修合同協(xié)議書正規(guī)范本
- 垃圾桶項目采購合同
- 出租車租賃合同模板
- 2025居間合同協(xié)議書范本
- 產(chǎn)品全國總代理合同范本年
- 宣傳欄制作安裝合同書
- 委托合同范文年
- 2025年中圖版八年級歷史上冊階段測試試卷
- 2024年高考政治(安徽卷)真題詳細解讀及評析
- 數(shù)字經(jīng)濟學導論-全套課件
- 動物檢疫技術-動物檢疫的對象(動物防疫與檢疫技術)
- 中考記敘文閱讀
- 《計算機應用基礎》-Excel-考試復習題庫(含答案)
- 產(chǎn)科溝通模板
- 2023-2024學年四川省成都市小學數(shù)學一年級下冊期末提升試題
- GB/T 7462-1994表面活性劑發(fā)泡力的測定改進Ross-Miles法
- GB/T 2934-2007聯(lián)運通用平托盤主要尺寸及公差
- GB/T 21709.13-2013針灸技術操作規(guī)范第13部分:芒針
- 2022年青島職業(yè)技術學院單招語文考試試題及答案解析
- 急診科進修匯報課件
評論
0/150
提交評論