久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

實驗8 二叉樹的基本操作

時間:2019-05-12 07:24:22下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《實驗8 二叉樹的基本操作》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《實驗8 二叉樹的基本操作》。

第一篇:實驗8 二叉樹的基本操作

實驗8 二叉樹的基本操作

班級: 學號:

一、題目

由數字序列生成二叉樹 假設我們有這樣的二叉樹:

節點的元素(key)是正整數,且互不相同。可能給出這樣一個虛擬的樹更有利于理解輸入。是的,我們的輸入是上圖的先序遍歷;

即,要求根據1 3 0 2 0 0 4 5 0 0 0這樣的輸入,構造出一棵只含有正整數節點的二叉樹。

【輸入】

擴展的二叉樹的先序遍歷 【輸出】

構造的簡單樹的節點個數 【樣例輸入】 3 0 2 0 0 4 5 0 0 0 【樣例輸出】

二、程序清單

三、程序調試過程中所出現的錯誤

四、運行結果(界面):

五、心得體會

第二篇:實驗三 二叉樹基本操作與應用實驗

實驗三

二叉樹基本操作與應用實驗

第三次實驗主要包括兩部分內容:1.二叉樹基本操作實驗;2.二叉樹應用—赫夫曼樹與赫夫曼編碼實驗。基本操作包括存儲結構建立和遍歷算法,本文只給出部分參考程序,請大家盡量完成多數基本操作。

第一部分 基本操作實驗

[問題描述] 二叉樹采用二叉鏈表作存儲結構,試編程實現二叉樹的如下基本操作

1.按先序序列構造一棵二叉鏈表表示的二叉樹T;

2.對這棵二叉樹進行遍歷:先序、中序、后序以及層次遍歷序列,分別輸出結點 的遍歷序列;

3.求二叉樹的深度,結點數目,葉結點數目; [數據描述] //二叉樹的二叉鏈表存儲表示 先序遍歷二叉樹遞歸算法

6.層次遍歷二叉樹的非遞歸算法

7.求二叉樹的深度

[說明]

1.按先序次序輸入二叉樹中結點的值,用‘#’表示空樹,對每一個結點應當確定其左右子樹的值(為空時必須用特定的空字符占位),故執行此程序時,最好先在紙上畫出你想建立的二叉樹,每個結點的左右子樹必須確定。若為空,則用特定字符標出,然后再按先序輸入這棵二叉樹的字符序列。

2.為了簡化程序的書寫量,以及程序的清晰性,對結點的訪問以一條輸出語句表示,若有更復雜的或多種訪問,可以將結點的訪問編寫成函數,然后通過函數指針進行函數的調用。讀者若有興趣,可自行編寫。

3.c語言函數參數傳遞,都是以“傳值”的方式,故在設計函數時,必須注意參數的傳遞。若想通過函數修改實際參數的值,則必須用指針變量作參數。具體設計時;讀者一定要把指針變量及指針變量指向的值等概念弄清楚。

4.完整參考程序只給出了部分遍歷算法,對于其他算法,請讀者參照示例,自行編程完成,以加深學習體會。對于二叉鏈表的建立也是如此,示例中只是給出了先序法建立過程,讀者可自行練習中序、后序二叉鏈表建立法,葉子結點或二叉樹結點總數求法等。

第二部分 二叉樹應用實驗

---------郝夫曼樹與郝夫曼編碼

[問題描述] 利用HuffMan編碼進行通信可以大大提高信道利用率,縮短信息傳輸時間,降低傳輸成本。但是,這要求在發送端通過一個編碼系統對待傳數據預先編碼,在接受端將傳來的數據編碼進行譯碼(復原)。對于有些信道,每端都需要一個完整的編/譯碼系統。試為這樣的信息收發站編寫一個Huffman的編/譯碼系統。給定一組權值{7,9,5,6,10,l,13,15,4,8}.構造一棵赫夫曼樹,并計算帶權路徑長度WPL。

Huffman編碼存在磁盤文件中。提出這些要求,是給讀者一定的思考空間和提高自己的編程能力的機會。讀者需要注意類c語言描述的算法在轉變為C源程序時關于函數參數的處理以及其他變量的定義與使用方法。

2.讀者可參考此程序,實現Huffman編/譯碼系統的其他算法,以進一步加深理解和體會。

心得體會

(1)通信領域的編碼問題曾經對許多的通信技術專家形成了困擾,后來人們對樹型數據結構有了一定的認識之后,才有效地解決了通信的編碼需求。它不僅使通信編碼的長度縮短,更實際的意義是使整個電文的長度大大縮短了,從而迅速地提高了通信的效率。

(2)樹型數據結構不僅使各類實際應用問題找到了一種有效解決途徑,而且它也對計算機科學技術本身的發展起到了非常重要的作用,如在編譯原理過程中的編碼問題,使得編譯系統提高了速度。

第三篇:實驗3 - 二叉樹的建立及基本操作

實驗三

實驗目的:

二叉樹的建立及基本操作

本次實驗的主要目的是熟練掌握二叉樹的定義、三序(先序、中序、后序)遍歷方法,并用遍歷思想求解具體二叉樹應用問題。通過程序實現,體會遞歸算法的優缺點。

實驗要求:

用C語言編程實現二叉樹的基本操作,并完成下述函數功能:(1)CreateBiTree():根據先序遍歷序列生成一棵二叉樹(2)Depth():求此二叉樹的深度

(3)CountLeaf():統計該二叉樹中葉子結點的個數(4)InOrderTraverse():中序遍歷二叉樹(5)PostOrderTraverse():后序遍歷二叉樹

在主函數main()中調用各個子函數完成單鏈表的基本操作。例: void main(){ BiTree T;CreateBiTree(T);int d= Depth(T);printf(“深度為%d”, d);int num= CountLeaf(T);printf(“葉子結點個數為%d”, num);InOrderTraverse(T);PostOrderTraverse(T);} //注意函數調用時,只傳遞參數名稱,不需要傳遞參數類型和&符號。

[實現提示] 采用特殊符號,如*號表示空樹的情況。

通過輸入擴展的先序序列建立一棵二叉樹,即,二叉樹中結點為空時應輸入*符號表示。[測試數據] 由學生自己確定,注意邊界數據。

程序檢查時,由老師提供用于建樹的初始輸入序列。

程序源碼:(后付紙)程序運行結果:

實驗心得體會:

有一些概念不明白,看書之后弄懂了,仔細看了二叉樹遍歷的知識點,問了同學有了思路。熟悉了二叉樹的基本操作,掌握了二叉樹實現。

第四篇:實驗10 二叉樹的基本操作

浙江大學城市學院實驗報告

課程名稱

數據結構基礎

實驗項目名稱

實驗十

二叉樹的基本操作

實驗成績

指導老師(簽名)

日期

一.實驗目的和要求

1、掌握二叉樹的鏈式存儲結構。

2、掌握在二叉鏈表上的二叉樹操作的實現原理與方法。

3、進一步掌握遞歸算法的設計方法。

二.實驗內容

1、按照下面二叉樹二叉鏈表的存儲表示,編寫頭文件binary_tree.h,實現二叉鏈表的定義與基本操作實現函數;編寫主函數文件test4_1.cpp,驗證頭文件中各個操作。

二叉樹二叉鏈表存儲表示如下: struct BTreeNode {

ElemType data;

// 結點值域

BTreeNode *lchild , *rchild;// 定義左右孩子指針 };基本操作如下:

①void InitBTree(BTreeNode *&BT);

//初始化二叉樹BT

②void CreateBTree(BTreeNode *&BT, char *a);

//根據字符串a所給出的廣義表表示的二叉樹建立二叉鏈表存儲結構

③int EmptyBTree(BTreeNode *BT);

//檢查二叉樹BT是否為空,空返回1,否則返回0 ④int DepthBTree(BTreeNode *BT);//求二叉樹BT的深度并返回該值

⑤int FindBTree(BTreeNode *BT, ElemType x);

//查找二叉樹BT中值為x的結點,若查找成功返回1,否則返回0

⑥void PreOrder(BTreeNode *BT);//先序遍歷二叉樹BT ⑦void InOrder(BTreeNode *BT);//中序遍歷二叉樹BT ⑧void PostOrder(BTreeNode *BT);

//后序遍歷發二叉樹BT

⑨void PrintBTree(BTreeNode *BT);

//輸出二叉樹BT ⑩void ClearBTree(BTreeNode *&BT);

//清除二叉樹BT

2、選做:實現以下說明的操作函數,要求把函數添加到頭文件binary_tree.h中,并在主函數文件test4_1.cpp中添加相應語句進行測試。①void LevelOrder(BTreeNode *BT)//二叉樹的層序遍歷

②int Get_Sub_Depth(BTreeNode *T , ElemType x)//求二叉樹中以元素值為x的結點為根的子樹的深度

3、填寫實驗報告,實驗報告文件取名為report10.doc。

4、上傳實驗報告文件report10.doc、源程序文件test4_1.cpp及binary_tree.h到Ftp服務器上自己的文件夾下。

三.函數的功能說明及算法思路

(包括每個函數的功能說明,及一些重要函數的算法實現思路)函數:void InitBTree(BTreeNode *&BT)功能:初始化二叉樹BT 思路:將BT指向NULL

函數:void CBTree(BTreeNode *&BT)功能:輸入二叉樹

思路:按先序次序輸入二叉樹中結點的值(一個字符)特殊字符 $ 表示空樹

函數:void PBTree(BTreeNode *BT,int n)功能:橫向打印二叉樹

思路:先遞歸輸出右子樹,按層次輸出空格和“---”控制格式,再輸出當前結點值,最后遞歸左子樹

函數:void CreateBTree(BTreeNode *&BT, char *a)功能:根據字符串a所給出的廣義表表示的二叉樹建立二叉鏈表存儲結構

思路:根據廣義表表示的”(”,”)”和”,”等字符來構建二叉樹,用棧S來存儲根結點指針,用p來接收當前結點值數據并鏈接為棧頂元素的左/右孩子

函數:int EmptyBTree(BTreeNode *BT)功能:檢查二叉樹BT是否為空,空返回1,否則返回0 思路:返回判斷BT是否指向NULL

函數:int DepthBTree(BTreeNode *BT)功能:求二叉樹BT的深度并返回該值

思路:若一棵二叉樹為空,則它的深度為0,否則它的深度等于左子樹和右子樹中的最大深度加1

函數:int FindBTree(BTreeNode *BT, ElemType x)功能:查找二叉樹BT中值為x的結點,若查找成功返回1,否則返回0

思路:類似于前序遍歷,若空樹則返回0。若根結點值等于查找值x則返回1,否則先調用函數本身查找左子樹,還未找到則再查找右子樹,所有操作完成均為找到,則返回0

函數:void PreOrder(BTreeNode *BT)功能:先序遍歷二叉樹BT 思路:使用“根左右”的順序遍歷二叉樹

函數:void InOrder(BTreeNode *BT)功能:中序遍歷二叉樹BT 思路:使用“左根右”的順序遍歷二叉樹

函數:void PostOrder(BTreeNode *BT)

功能:后序遍歷二叉樹BT 思路:使用“左右根”的順序遍歷二叉樹

函數:void PrintBTree(BTreeNode *BT)

功能:輸出二叉樹BT 思路:按照廣義表表示方法輸出二叉樹(與輸入時相同)

函數:void ClearBTree(BTreeNode *&BT)

功能:清除二叉樹BT 思路:按照先子樹后根結點的順序刪除二叉樹

函數(選作):void LevelOrder(BTreeNode *BT)功能:二叉樹的層序遍歷

思路:初始化一個空隊列,若二叉樹為空,則空操作;否則,樹根指針入隊列。當隊列非空時循環:出隊首元素,并輸出該元素(指針)所指結點的值;且若該結點存在左右孩子,則左右孩子指針進隊列。輸出結果就是層序遍歷序列

函數(選作):求二叉樹中以元素值為x的結點為根的子樹的深度 功能:int Get_Sub_Depth(BTreeNode *T , ElemType x)思路:在FindBTree函數的基礎上修改,將找到結點時的返回值改為調用DepthBTree求出以該結點為根結點的子樹深度即可

四.實驗結果與分析

(包括運行結果截圖、結果分析等)

測試數據:a(b(c),d(e(f,g),h(,i))),abc$$$def$$g$$h$i$$ 結果分析:針對該二叉樹,程序輸出深度為4,正確;查找值f能夠找到,正確;先序遍歷結果為a b c d e f g h i,正確;中序遍歷結果為c b a f e g d h i,正確;后續遍歷結果為c b f g e I h d a,正確;輸出二叉樹的結果與輸入一致,正確;使用先序輸入二叉樹和橫向輸出部分正確。選作部分,層序遍歷結果為a b d c e h f g i,正確;以結點d為根結點的子樹深度為3,正確。

五.心得體會

(記錄實驗感受、上機過程中遇到的困難及解決辦法、遺留的問題、意見和建議等。)

【附錄----源程序】

第五篇:實驗5_二叉樹

贛南師范大學數學與計算機科學學院

實 驗 報 告 冊

課程名稱:算法與數據結構

實驗項目名稱: 實驗5.二叉樹 實驗學時: 4 學生學號與姓名: 實驗地點: 數計樓四樓 實驗日期: 年 月 日 指導老師:

實驗5 二叉樹

一、實驗目的和要求

(1)掌握二叉樹的生成,以及前、中、后序遍歷算法。(2)掌握應用二叉樹遞歸遍歷思想解決問題的方法。

二、實驗儀器和設備

Visual C++ 6.0

三、實驗內容與過程

1.建立一棵二叉樹。對此樹進行前序遍歷、中序遍歷及后序遍歷,輸出遍歷序列。

2.在第一題基礎上,求二叉樹中葉結點的個數。3.在第一題基礎上,求二叉樹的深度。

程序清單: 1.2.3.贛南師范大學數學與計算機科學學院

四、實驗結果與分析(程序運行結果及其分析)

五、實驗體會(遇到問題及解決辦法,編程后的心得體會)

下載實驗8 二叉樹的基本操作word格式文檔
下載實驗8 二叉樹的基本操作.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    第四次實驗--二叉樹遍歷

    一、 二叉鏈表的聲明 .BinaryNode public class BinaryNode //二叉樹的二叉鏈表結點類,泛型T指//定結點的元素類型 { public T data; //數據域,存儲數據元素 public BinaryNod......

    初中化學基本實驗操作總結

    一、初中化學實驗常用儀器和藥品的取用規則 (一)初中化學實驗常用儀器 1、試管 (1)用途: a、在常溫或加熱時,用作少量試劑的反應容器 b、溶解少量固體 c、收集少量氣體 (2)注意事項......

    物理實驗基本操作小結

    初中物理實驗基本操作小結 1、三個"零" 1.1 天平調零前,游碼應放在橫梁的零刻度處。 1.2 使用彈簧秤、電壓表、電流表、歐姆表時要檢查指針是否在零刻度處。 1.3 一切非零數字和......

    數據結構二叉樹操作驗證實驗報告

    班級:計算機11-2 學號:40 姓名:朱報龍成績:_________ 實驗七 二叉樹操作驗證 一、 實驗目的 ⑴ 掌握二叉樹的邏輯結構; ⑵ 掌握二叉樹的二叉鏈表存儲結構; ⑶ 掌握基于二叉鏈表......

    數據結構課程設計-_平衡二叉樹操作 - 副本

    課 程 設 計 報 告 一. 需求分析 1、建立平衡二叉樹并進行創建、增加、刪除、調平等操作。 2、設計一個實現平衡二叉樹的程序,可進行創建、增加、刪除、調平等操作,實現動態的......

    數據結構課程設計-平衡二叉樹操作

    課 程 設 計 報 告 課程名稱 數據結構課程設計 題 目平衡二叉樹操作 指導教師 設計起止日 2010-5-16 學 院 計算機學院 專 業軟件工程 學生姓名 班級/學號------------......

    初三化學--化學實驗基本操作二

    和被稱量的物質顛倒了,此時該物質的實際質量應是() A.7.9gB.8.0gC.8.1gD.8.3g 2、某學生用量筒量取液體時,量筒放平穩后俯視液面讀數為19ml,傾倒部課題:化學實驗基本操作二執筆人: 趙......

    實驗7 網絡的基本操作

    注意: 本次實驗完成后把最后兩頁實驗報告打印成紙質文檔,下次上理論課時上交。其中,[實驗內容]的藍色文字部分是實驗報告2答題紙所填寫內容 實驗七、網絡的基本操作 班級 學號......

主站蜘蛛池模板: 国产亚洲成av人片在线观黄桃| 欧美、另类亚洲日本一区二区| 欧美午夜精品久久久久久浪潮| 久久99精品福利久久久久久| 又大又黄又粗高潮免费| 亚洲av无码码潮喷在线观看| 国产片精品av在线观看夜色| 色欲天天婬色婬香综合网完整版| 国产大学生粉嫩无套流白浆| 国产成人久久精品二区三区| 久久aⅴ人妻少妇嫩草影院| 亚洲va欧美va国产va综合| 国产成人精品午夜2022| 成人爽a毛片免费视频| 亚洲日韩一区二区| 亚洲国产av无码专区亚洲av| 熟妇人妻无乱码中文字幕真矢织江| 亚洲a综合一区二区三区| 综合久久久久6亚洲综合| 无码免费毛片手机在线| 999在线视频精品免费播放观看| 国产欧美综合在线观看第十页| 啊轻点灬大粗嗯太深了| 伊人色综合九久久天天蜜桃| 蜜臀av色欲a片无码一区| 国产农村黄aaaaa特黄av毛片| 免费特黄夫妻生活片| 国产精品天干天干有线观看| 亚洲性色av日韩在线观看| 亚洲欧美日本中文字不卡| 免费人妻无码不卡中文字幕系| 伊人久久大香线蕉无码| 四虎影院在线观看| 巨爆乳中文字幕巨爆区巨爆乳无码| 日韩精品一区二区av在线| 国产熟女露脸大叫高潮| 日本50岁丰满熟妇xxxx| 国产美女亚洲精品久久久综合| 日日碰狠狠躁久久躁96avv| 羞羞影院午夜男女爽爽| 色婷婷精品大在线视频|