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

實驗5_二叉樹

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

第一篇:實驗5_二叉樹

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

實 驗 報 告 冊

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

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

實驗5 二叉樹

一、實驗目的和要求

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

二、實驗儀器和設備

Visual C++ 6.0

三、實驗內容與過程

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

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

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

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

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

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

一、二叉鏈表的聲明.BinaryNode public class BinaryNode //二叉樹的二叉鏈表結點類,泛型T指//定結點的元素類型 {

public T data;

//數據域,存儲數據元素

public BinaryNode left, right;

//鏈域,分別指向左、右孩子結點

//構造結點,參數分別指定元素和左、右孩子結點

publicBinaryNode(T data, BinaryNode left, BinaryNode right)

{ this.data = data;this.left = left;this.right = right;

}

public BinaryNode(T data)

//構造指定值的葉子結點

{ this(data, null, null);

} publicBinaryNode()

{ this(null, null, null);

}

//可聲明以下方法 public String toString()

{ returnthis.data.toString();

}

public boolean equals(Object obj)

//比較兩個結點值是否相等,覆蓋Object

//類的equals(obj)方法

{ returnobj==this || objinstanceofBinaryNode&&this.data.equals(((BinaryNode)obj).data);

}

public booleanisLeaf()

//判斷是否葉子結點

{ returnthis.left==null &&this.right==null;

} } 二、二叉樹中的遍歷方法的聲明.BinaryTree public class BinaryTree {

public BinaryNode root;

//根結點,結點結構為二叉鏈表

public BinaryTree()

//構造空二叉樹

{ this.root=null;

}

public booleanisEmpty()

//判斷二叉樹是否空

{ returnthis.root==null;

}

//二叉樹的先根、中根和后根次序遍歷算法

public void preOrder()

//先根次序遍歷二叉樹

{ System.out.print(“先根次序遍歷二叉樹:

”);preOrder(root);//調用先根次序遍歷二叉樹的遞歸方法 System.out.println();

}

public void preOrder(BinaryNode p)

//先根次序遍歷以p結點為根的子二叉

//遞歸方法

{ if(p!=null)

//若二叉樹不空

{ System.out.print(p.data.toString()+“ ”);//訪問當前結點

preOrder(p.left);

//按先根次序遍歷當前結點的左子樹,//遞歸調用 preOrder(p.right);

//按先根次序遍歷當前結點的右子樹

//遞歸調用

}

}

public String toString()

//返回先根次序遍歷二叉樹所有結點的描述字符串

{ returntoString(root);

}

private String toString(BinaryNode p)

//返回先根次序遍歷以p為根的子樹描述字

//符串,遞歸算法

{ if(p==null)return “";

return p.data.toString()+” “ + toString(p.left)+ toString(p.right);//遞歸調用

}

public void inOrder()

//中根次序遍歷二叉樹

{ System.out.print(”中根次序遍歷二叉樹:

“);inOrder(root);System.out.println();

}

public void inOrder(BinaryNode p)

//中根次序遍歷以p結點為根的子二叉

//遞歸方法

{ if(p!=null)

{ inOrder(p.left);

//中根次序遍歷左子樹,遞歸調用 System.out.print(p.data.toString()+” “);inOrder(p.right);

//中根次序遍歷右子樹,遞歸調用

}

}

public void postOrder()

//后根次序遍歷二叉樹

{ System.out.print(”后根次序遍歷二叉樹:

“);postOrder(root);System.out.println();

}

public void postOrder(BinaryNode p)

//后根次序遍歷以p結點為根的子二叉樹,//遞歸方法

{ if(p!=null)

{ postOrder(p.left);postOrder(p.right);System.out.print(p.data.toString()+” “);

}

}

public BinaryTree(T[] prelist, T[] inlist)

//以先根和中根序列構造二叉樹

{ this.root = create(prelist, inlist, 0, 0, prelist.length);

} //以先根和中根序列創建一棵子樹,子樹根結點值是prelist[preStart],n指定子序列長度.//返回所創建子樹的根結點

privateBinaryNode create(T[] prelist, T[] inlist, intpreStart, intinStart, int n)

{ System.out.print(”prelist:“);print(prelist, preStart, n);System.out.print(”,inlist:“);print(inlist, inStart, n);System.out.println();

if(n<=0)return null;

T elem=prelist[preStart];

//根結點值 BinaryNode p=new BinaryNode(elem);

//創建葉子結點 inti=0;while(i

//在中根序列中查找根值所在位置 i++;p.left = create(prelist, inlist, preStart+1, inStart, i);

//創建左子樹 p.right = create(prelist, inlist, preStart+i+1, inStart+i+1, n-1-i);//創建右子樹 return p;

} private void print(T[] table, int start, int n)

{ for(inti=0;i

}

public BinaryTree(T[] prelist)

//以標明空子樹的先根序列構造二叉樹

{ this.root = create(prelist);

}

//以標明空子樹的先根序列構造一棵子二叉樹,子樹的根值是prelist[i],返回所創建子樹的根結點 privateinti=0;privateBinaryNode create(T[] prelist)

{ BinaryNode p = null;if(i

{

T elem=prelist[i];i++;if(elem!=null)//不能elem!=”^“,因為T不一定是String

{

p = new BinaryNode(elem);

//創建葉子結點 p.left = create(prelist);

//創建p的左子樹 p.right = create(prelist);

//創建p的右子樹

}

} return p;

}

}

三、運行程序

.BinaryTree_make //運用二叉鏈表及先根和中根遍歷確立并構造二叉樹

public class BinaryTree_make {

public static BinaryTree make()

//構造給定的一棵二叉樹

{ BinaryTreebitree=new BinaryTree();//創建空二叉樹

BinaryNodechild_f, child_d, child_b, child_c;//創建4個二叉鏈表域 child_d = new BinaryNode(”D“, null, new BinaryNode(”G“));child_b = new BinaryNode(”B“, child_d, null);child_f = new BinaryNode(”F“, new BinaryNode(”H“), null);child_c = new BinaryNode(”C“, new BinaryNode(”E“), child_f);bitree.root = new BinaryNode(”小唐“, child_b, child_c);//創建根結點 returnbitree;

} public static void main(String args[])

{ BinaryTreebitree = make();bitree.preOrder();

//先根次序遍歷二叉樹 bitree.inOrder();//中根遍歷 bitree.postOrder();

//后根遍歷

String[] prelist = {”A“,”B“,”D“,”G“,”C“,”E“,”F“,”H“};//采用先根中根兩種遍歷

String[] inlist = {”D“,”G“,”B“,”A“,”E“,”C“,”H“,”F"};

//確定一顆二叉樹 BinaryTree bitree1 = new BinaryTree(prelist, inlist);

bitree1.preOrder();// 先根遍歷

bitree1.inOrder();//中根遍歷

bitree1.postOrder();

} }

//后根遍歷

四、運行結果

五、實驗內容

1.根據圖示的二叉樹,運用二叉鏈表及先中根遍歷構造二叉樹,并在控制臺上顯示出二叉樹:先中后根遍歷

六、附加實驗內容

在上述實驗中,只通二叉鏈表及先根和中根遍歷確立構造二叉樹。沒有給出中根和后根遍歷二叉樹的方法。現要求同學們寫出中根和后根遍歷確立二叉樹的方法(只寫方法)。

七、實驗報告要求

1.運行結果需要截圖,寫出補充方法體的內容,附加實驗只給方法即可。

2.心得體會不可為空(可寫對此次實驗的看法,亦可寫自己近來學習數據結構的感受等等,內容不限)

第三篇:實驗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);} //注意函數調用時,只傳遞參數名稱,不需要傳遞參數類型和&符號。

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

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

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

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

實驗心得體會:

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

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

文檔為doc格式


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

相關范文推薦

    實驗10 二叉樹的基本操作(推薦閱讀)

    浙江大學城市學院實驗報告 課程名稱 數據結構基礎實驗項目名稱 實驗十二叉樹的基本操作 實驗成績指導老師(簽名 )日期一. 實驗目的和要求 1、掌握二叉樹的鏈式存儲結構。 2......

    實驗報告:二叉樹

    實驗報告 二叉樹 一 實驗目的 1、進一步掌握指針變量,動態變量的含義; 2、掌握二叉樹的結構特性以及各種存儲結構的特點及適用范圍。 3、掌握用指針類型描述、訪問和處理二叉......

    二叉樹遍歷課程設計】

    數據結構程序設計報告 學院: 班級: 學號:姓名: 實驗名稱:二叉樹的建立與遍歷 一、 實驗目的: 1.掌握二叉樹的二叉鏈表存儲結構; 2.掌握二叉樹創建方法; 3.掌握二叉樹的先序、中序、......

    數據結構作業——二叉樹

    數據結構實驗報告二 題目: 用先序遞歸過程監理二叉樹(存儲結構:二叉鏈表) 輸入數據按先序遍歷輸入,當某節點左子樹或者右子樹為空時,輸入‘*’號,如輸入abc**d**e**時,得到的二叉樹......

    二叉樹的性質總結

    一、二叉樹的性質 性質1、二叉樹的第i層上至多有2 i-1(i ?1)個結點。用數學歸納法證明 推廣:k叉樹(或度為k的樹)的第i層上至多有k i-1(i ?1)個結點 性質2、度為h的二叉樹中至多含有......

    二叉樹的類定義

    實驗一、二叉樹的類定義 程序說明 1、改程序用二叉鏈存儲結構將其生成一棵二叉樹; 2、分別用三種遍歷算法將二叉樹的遍歷序列輸出; 3、用括號表示法輸出二叉樹。 二叉樹的形狀......

    樹和二叉樹教案1

    教學過程 一、導入 樹是一類重要的非線性數據結構,是以分支關系定義的層次結構。在日常生活同學們經常見到樹。樹有一個樹根。有許多樹枝,在樹枝上長有很多樹葉。就象我們今天......

    二叉樹的遍歷學習心得

    二叉樹的非遞歸遍歷學習心得 對于學習數據結構的新手來說,二叉樹應該是遇到的一個比較大的難題。對于二叉樹的遍歷,如果使用遞歸的方法,代碼非常簡單,但是有些程序語言不支持遞......

主站蜘蛛池模板: 久久久久无码国产精品一区| 超碰免费公开| 久久精品黄aa片一区二区三区| 亚洲国产制服丝袜无码av| 超碰国产天天做天天爽| 亚洲日韩av片在线观看| 国产揄拍国产精品人妻蜜| 无码三级在线看中文字幕完整版| 蜜臀aⅴ国产精品久久久国产老师| 久久综合亚洲色hezyo国产| 亚洲综合天堂av网站在线观看| 免费人妻无码不卡中文字幕18禁| 国内精品久久久久久久久齐齐| 性夜久久一区国产9人妻| 亚洲综合国产成人丁香五月激情| 亚洲国产精品嫩草影院久久| 国产精品久aaaaa片| 暴力调教一区二区三区| 免费人妻无码不卡中文字幕系| 粗大猛烈进出高潮视频大全| 亚洲妇女行蜜桃av网网站| 强开小婷嫩苞又嫩又紧视频韩国| 国产精品无码a∨精品| 国产成人无码一区二区在线播放| 五月婷之久久综合丝袜美腿| 成 人 网 站 免费 在线| 国产日产精品久久久久快鸭| 玩弄人妻少妇精品视频| 国产精品视频网国产| 自在自线亚洲а∨天堂在线| 国产精品一区二区久久乐下载| 激情综合色综合啪啪五月丁香| 色又黄又爽18禁免费网站现观看| 国产男女猛烈无遮挡免费视频网站| 成人国产精品免费视频| 夜夜爽久久精品国产三级| 亚洲精品无码成人a片蜜臀| 亚洲国产五月综合网| 女人高潮抽搐喷液30分钟视频| 中文字幕亚洲情99在线| 久爱无码精品免费视频在线观看|