【正文】
{ // 返回二叉樹的深度 int depthleft, depthright。 if (t == null) return 0。 depthleft = depth()。 depthright = depth()。 return (depthleft, depthright) + 1。 } //橫向輸出樹狀圖public void showTree(BiTNodeAnyType t,int n){ if (t==null) return。 showTree(,++n)。 for (int i = 0。 i n。 i++) ( )。 (+\n)。 showTree(,n++)。 }}3. 測(cè)試函數(shù)package kcsj。public class Test { public static void pln(Object o) { (o)。 } public static void main(String[] args) { BinaryTreeCharacter bt = new BinaryTreeCharacter()。 Character[] charsPre = { 39。a39。, 39。b39。, 39。d39。, null, null, null, 39。c39。, 39。e39。, null, null, 39。f39。 }。 Character[] charsPath = { 39。a39。, 39。b39。, 39。c39。, 39。d39。, null, 39。e39。, 39。f39。 }。 pln(先序建樹:{39。a39。,39。b39。,39。d39。,null,null,null,39。c39。,39。e39。,null,null,39。f39。})。 (charsPre)。 pln(層序遍歷結(jié)果:)。 ()。 pln( )。 pln(樹圖為(橫向):)。 (, 1)。 pln( )。 pln(層序建樹:{39。a39。,39。b39。,39。c39。,39。d39。,null,39。e39。,39。f39。})。 (charsPath)。 pln(先序遍歷結(jié)果:)。 ()。 pln( )。 pln(樹圖為(橫向):)。 (, 1)。 pln( )。 pln(葉子節(jié)點(diǎn)數(shù): + ())。 pln(交換后層次遍歷結(jié)果:)。 ()。 ()。 pln( )。 pln(樹圖為(橫向):)。 (, 1)。 pln( )。 pln(深度為: + ())。 } } 測(cè)試數(shù)據(jù)對(duì)每個(gè)函數(shù)的測(cè)試數(shù)據(jù) 利用線序遍歷和層次遍歷分別建樹a b c d e f 對(duì)程序整體的測(cè)試數(shù)據(jù) a b c d e f六、測(cè)試情況先序建樹:{39。a39。,39。b39。,39。d39。,null,null,null,39。c39。,39。e39。,null,null,39。f39。}層序遍歷結(jié)果:a b c d e f 樹圖為(橫向): f c e a b d 層序建樹:{39。a39。,39。b39。,39。c39。,39。d39。,null,39。e39。,39。f39。}先序遍歷結(jié)果:a b d c e f 樹圖為(橫向): f c e a b d 葉子節(jié)點(diǎn)數(shù):3交換后層次遍歷結(jié)果:a c b f e d 樹圖為(橫向): d b a e c f 深度為:3結(jié) 論在課程設(shè)計(jì)中,遇到最多的問(wèn)題便是對(duì)一個(gè)方法思想的轉(zhuǎn)換。在這兩周的課程設(shè)計(jì)中,讓我學(xué)會(huì)如何思考一個(gè)樹的存儲(chǔ)結(jié)構(gòu),如何創(chuàng)建,各種遍歷的思想需要怎樣的代碼實(shí)現(xiàn)??偠灾瑑蓚€(gè)字,思考。在課程設(shè)計(jì)時(shí),思想問(wèn)題一直是我進(jìn)度緩慢的原因,對(duì)于層次遍歷建樹的時(shí)候的思想一直拐不過(guò)彎,不知道該以什么樣的方式建立左右子樹。最終在同學(xué)的講解下,理解了建樹的方法。首先以隊(duì)列的形式,傳進(jìn)根節(jié)點(diǎn)。再判斷輸入數(shù)組中是否存在根節(jié)點(diǎn)的左子樹,如果存在則創(chuàng)建左孩子并將數(shù)據(jù)壓入隊(duì)列中。而右子樹為左子樹加一,故而在設(shè)置右子樹的范圍時(shí),需要小于輸入數(shù)組的長(zhǎng)度減一,再以同樣的方法判斷是否存在右子樹,存在則建立右孩子并將數(shù)據(jù)壓入隊(duì)列。這次課程設(shè)計(jì)明白的遠(yuǎn)遠(yuǎn)不止這些,對(duì)于子樹的交換,是我對(duì)于數(shù)據(jù)結(jié)構(gòu)的認(rèn)知茅塞頓開(kāi),發(fā)現(xiàn)原來(lái)自己以前真的一點(diǎn)都沒(méi)明白這門課程到底是干嘛的,如今才清晰地明白這門課程要的是對(duì)數(shù)據(jù)的結(jié)構(gòu)的思考。發(fā)現(xiàn)自己的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)還是很弱,對(duì)于很多方法都不熟悉,以后希望能有更多的機(jī)會(huì)聯(lián)系數(shù)據(jù)結(jié)構(gòu),讓自己得到提升。參考文獻(xiàn)[1] 王世民 JAVA數(shù)據(jù)結(jié)構(gòu)與算法分析[M] 北京:清華大學(xué)出版社, 2004 [2] 嚴(yán)蔚敏 數(shù)據(jù)結(jié)構(gòu)[M] 北京:清華大學(xué)出版社 200421山東建筑大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)指導(dǎo)教師評(píng)語(yǔ) 班級(jí):網(wǎng)絡(luò)101 學(xué)生姓名:王天未 學(xué)號(hào):2010111200指導(dǎo)教師評(píng)語(yǔ)(包括工作態(tài)度,遵守紀(jì)律;基本理論、知識(shí)、技能;獨(dú)立工作能力和分析解決問(wèn)題的能力;完成任務(wù)情況及水平):學(xué)生成績(jī)(百分制):指導(dǎo)教師簽名: 年 月 日