![2021年湖北省基礎數(shù)據(jù)要領_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/775ae2c7-e890-431f-960f-b73985474ed1/775ae2c7-e890-431f-960f-b73985474ed11.gif)
![2021年湖北省基礎數(shù)據(jù)要領_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/775ae2c7-e890-431f-960f-b73985474ed1/775ae2c7-e890-431f-960f-b73985474ed12.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、2021年湖北省基礎數(shù)據(jù)要領 2021年湖北省基礎數(shù)據(jù)要領 1、 二叉樹的層次遍歷序列的第一個結(jié)點是二叉樹的根。實際上,層次遍歷序列中的每個結(jié)點都是“局部根”。確定根后,到二叉樹的中序序列中,查到該結(jié)點,該結(jié)點將二叉樹分為“左根右”三部分。若左、右子樹均有,則層次序列根結(jié)點的后面應是左右子樹的根;若中序序列中只有左子樹或只有右子樹,則在層次序列的根結(jié)點后也只有左子樹的根或右子樹的根。這樣,定義一個全局變量指針r,指向?qū)哟涡蛄写幚碓亍K惴ㄖ邢忍幚砀Y(jié)點,將根結(jié)點和左右子女的信息入隊列。然后,在隊列不空的條件下,循環(huán)處理二叉樹的結(jié)點。隊列中元素的數(shù)據(jù)結(jié)構(gòu)定義如下: typedef struct
2、 int lvl; /層次序列指針,總是指向當前“根結(jié)點”在層次序列中的位置 int l,h; /中序序列的下上界 int f; /層次序列中當前“根結(jié)點”的雙親結(jié)點的指針 int lr; / 1雙親的左子樹 2雙親的右子樹 qnode; bitree creat(datatype in,level,int n) /由二叉樹的層次序列l(wèi)eveln和中序序列inn生成二叉樹。 n是二叉樹的結(jié)點數(shù) if (n1) printf(“參數(shù)錯誤n”); exit(0); qnode s,q; /q是元素為qnode類型的隊列,容量足夠大 init(q); int r=0; /r是層次序列指針,指向當前待
3、處理的結(jié)點 bitree p=(bitree)malloc(sizeof(binode); /生成根結(jié)點 p-data=level0; p-lchild=null; p-rchild=null; /填寫該結(jié)點數(shù)據(jù) for (i=0; in; i+) /在中序序列中查找根結(jié)點,然后,左右子女信息入隊列 if (ini=level0) break; if (i=0) /根結(jié)點無左子樹,遍歷序列的1n-1是右子樹 p-lchild=null; s.lvl=+r; s.l=i+1; s.h=n-1; s.f=p; s.lr=2; enqueue(q,s); else if (i=n-1) /根結(jié)點無右
4、子樹,遍歷序列的1n-1是左子樹 p-rchild=null; s.lvl=+r; s.l=1; s.h=i-1; s.f=p; s.lr=1; enqueue(q,s); else /根結(jié)點有左子樹和右子樹 s.lvl=+r; s.l=0; s.h=i-1; s.f=p; s.lr=1;enqueue(q,s);/左子樹有關信息入隊列 s.lvl=+r; s.l=i+1;s.h=n-1;s.f=p; s.lr=2;enqueue(q,s);/右子樹有關信息入隊列 while (!empty(q) /當隊列不空,進行循環(huán),構(gòu)造二叉樹的左右子樹 s=delqueue(q); father=s.f
5、; for (i=s.l; i=s.h; i+) if (ini=levels.lvl) break; p=(bitreptr)malloc(sizeof(binode); /申請結(jié)點空間 p-data=levels.lvl; p-lchild=null; p-rchild=null; /填寫該結(jié)點數(shù)據(jù) if (s.lr=1) father-lchild=p; else father-rchild=p; /讓雙親的子女指針指向該結(jié)點 if (i=s.l) p-lchild=null; /處理無左子女 2021年湖北省基礎數(shù)據(jù)要領 s.lvl=+r; s.l=i+1; s.f=p; s.lr=2
6、; enqueue(q,s); else if (i=s.h) p-rchild=null; /處理無右子女 s.lvl=+r; s.h=i-1; s.f=p; s.lr=1; enqueue(q,s); elses.lvl=+r; s.h=i-1; s.f=p; s.lr=1; enqueue(q,s);/左子樹有關信息入隊列 s.lvl=+r; s.l=i+1; s.f=p; s.lr=2; enqueue(q,s); /右子樹有關信息入隊列 /結(jié)束while (!empty(q) return(p); /算法結(jié)束 2、 二叉樹的層次遍歷序列的第一個結(jié)點是二叉樹的根。實際上,層次遍歷序列中
7、的每個結(jié)點都是“局部根”。確定根后,到二叉樹的中序序列中,查到該結(jié)點,該結(jié)點將二叉樹分為“左根右”三部分。若左、右子樹均有,則層次序列根結(jié)點的后面應是左右子樹的根;若中序序列中只有左子樹或只有右子樹,則在層次序列的根結(jié)點后也只有左子樹的根或右子樹的根。這樣,定義一個全局變量指針r,指向?qū)哟涡蛄写幚碓亍K惴ㄖ邢忍幚砀Y(jié)點,將根結(jié)點和左右子女的信息入隊列。然后,在隊列不空的條件下,循環(huán)處理二叉樹的結(jié)點。隊列中元素的數(shù)據(jù)結(jié)構(gòu)定義如下: typedef struct int lvl; /層次序列指針,總是指向當前“根結(jié)點”在層次序列中的位置 int l,h; /中序序列的下上界 int f; /層
8、次序列中當前“根結(jié)點”的雙親結(jié)點的指針 int lr; / 1雙親的左子樹 2雙親的右子樹 qnode; bitree creat(datatype in,level,int n) /由二叉樹的層次序列l(wèi)eveln和中序序列inn生成二叉樹。 n是二叉樹的結(jié)點數(shù) if (n1) printf(“參數(shù)錯誤n”); exit(0); qnode s,q; /q是元素為qnode類型的隊列,容量足夠大 init(q); int r=0; /r是層次序列指針,指向當前待處理的結(jié)點 bitree p=(bitree)malloc(sizeof(binode); /生成根結(jié)點 p-data=level0;
9、 p-lchild=null; p-rchild=null; /填寫該結(jié)點數(shù)據(jù) for (i=0; in; i+) /在中序序列中查找根結(jié)點,然后,左右子女信息入隊列 if (ini=level0) break; if (i=0) /根結(jié)點無左子樹,遍歷序列的1n-1是右子樹 p-lchild=null; s.lvl=+r; s.l=i+1; s.h=n-1; s.f=p; s.lr=2; enqueue(q,s); else if (i=n-1) /根結(jié)點無右子樹,遍歷序列的1n-1是左子樹 p-rchild=null; s.lvl=+r; s.l=1; s.h=i-1; s.f=p; s.
10、lr=1; enqueue(q,s); 2021年湖北省基礎數(shù)據(jù)要領 else /根結(jié)點有左子樹和右子樹 s.lvl=+r; s.l=0; s.h=i-1; s.f=p; s.lr=1;enqueue(q,s);/左子樹有關信息入隊列 s.lvl=+r; s.l=i+1;s.h=n-1;s.f=p; s.lr=2;enqueue(q,s);/右子樹有關信息入隊列 while (!empty(q) /當隊列不空,進行循環(huán),構(gòu)造二叉樹的左右子樹 s=delqueue(q); father=s.f; for (i=s.l; i=s.h; i+) if (ini=levels.lvl) break;
11、p=(bitreptr)malloc(sizeof(binode); /申請結(jié)點空間 p-data=levels.lvl; p-lchild=null; p-rchild=null; /填寫該結(jié)點數(shù)據(jù) if (s.lr=1) father-lchild=p; else father-rchild=p; /讓雙親的子女指針指向該結(jié)點 if (i=s.l) p-lchild=null; /處理無左子女 s.lvl=+r; s.l=i+1; s.f=p; s.lr=2; enqueue(q,s); else if (i=s.h) p-rchild=null; /處理無右子女 s.lvl=+r; s.h=i-1; s.f=p; s.lr=1; enqueue(q,s); elses.lvl=+r; s.h=i-1; s.f=p; s.lr=1; enqueue(q,s);/左子樹有關信息入隊列 s.lvl=+r; s.l=i+1; s.f=p;
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版部編歷史七年級上冊《第19課 北魏政治和北方民族大交融》聽課評課記錄
- 湘教版數(shù)學八年級上冊1.5《分式方程的應用》聽評課記錄2
- 八年級數(shù)學下冊23.3事件的概率1聽評課記錄滬教版五四制
- 人教版地理八年級下冊6.3《世界上最大的黃土堆積區(qū)-黃土高原》聽課評課記錄1
- 蘇科版數(shù)學八年級上冊聽評課記錄《5-1物體位置的確定》
- 用功合同范本(2篇)
- 環(huán)境友好原材料采購合同(2篇)
- 人教版五年級下冊數(shù)學《第2單元因數(shù)與倍數(shù) 第1課時 因數(shù)和倍數(shù)(1)》聽評課記錄
- 聽評課記錄2年級
- 統(tǒng)編教材部編人教版道德與法治九年級下冊《3.2 與世界深度互動》聽課評課記錄
- 二零二五年度大型自動化設備買賣合同模板2篇
- 2024版金礦居間合同協(xié)議書
- 江西省部分學校2024-2025學年高三上學期1月期末英語試題(含解析無聽力音頻有聽力原文)
- GA/T 2145-2024法庭科學涉火案件物證檢驗實驗室建設技術規(guī)范
- 2025內(nèi)蒙古匯能煤化工限公司招聘300人高頻重點提升(共500題)附帶答案詳解
- 2025年中國融通資產(chǎn)管理集團限公司春季招聘(511人)高頻重點提升(共500題)附帶答案詳解
- 寵物護理行業(yè)客戶回訪制度構(gòu)建
- 電廠檢修管理
- 《SPIN銷售法課件》課件
- 機動車屬性鑒定申請書
- 2024年中考語文試題分類匯編:非連續(xù)性文本閱讀(學生版)
評論
0/150
提交評論