【正文】
{ // 返回二叉樹的深度 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. 測試函數(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(深度為: + ())。 } } 測試數(shù)據(jù)對每個函數(shù)的測試數(shù)據(jù) 利用線序遍歷和層次遍歷分別建樹a b c d e f 對程序整體的測試數(shù)據(jù) a b c d e f六、測試情況先序建樹:{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è)計中,遇到最多的問題便是對一個方法思想的轉(zhuǎn)換。在這兩周的課程設(shè)計中,讓我學(xué)會如何思考一個樹的存儲結(jié)構(gòu),如何創(chuàng)建,各種遍歷的思想需要怎樣的代碼實現(xiàn)??偠灾?,兩個字,思考。在課程設(shè)計時,思想問題一直是我進(jìn)度緩慢的原因,對于層次遍歷建樹的時候的思想一直拐不過彎,不知道該以什么樣的方式建立左右子樹。最終在同學(xué)的講解下,理解了建樹的方法。首先以隊列的形式,傳進(jìn)根節(jié)點(diǎn)。再判斷輸入數(shù)組中是否存在根節(jié)點(diǎn)的左子樹,如果存在則創(chuàng)建左孩子并將數(shù)據(jù)壓入隊列中。而右子樹為左子樹加一,故而在設(shè)置右子樹的范圍時,需要小于輸入數(shù)組的長度減一,再以同樣的方法判斷是否存在右子樹,存在則建立右孩子并將數(shù)據(jù)壓入隊列。這次課程設(shè)計明白的遠(yuǎn)遠(yuǎn)不止這些,對于子樹的交換,是我對于數(shù)據(jù)結(jié)構(gòu)的認(rèn)知茅塞頓開,發(fā)現(xiàn)原來自己以前真的一點(diǎn)都沒明白這門課程到底是干嘛的,如今才清晰地明白這門課程要的是對數(shù)據(jù)的結(jié)構(gòu)的思考。發(fā)現(xiàn)自己的數(shù)據(jù)結(jié)構(gòu)設(shè)計還是很弱,對于很多方法都不熟悉,以后希望能有更多的機(jī)會聯(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ī)科學(xué)與技術(shù)學(xué)院課程設(shè)計指導(dǎo)教師評語 班級:網(wǎng)絡(luò)101 學(xué)生姓名:王天未 學(xué)號:2010111200指導(dǎo)教師評語(包括工作態(tài)度,遵守紀(jì)律;基本理論、知識、技能;獨(dú)立工作能力和分析解決問題的能力;完成任務(wù)情況及水平):學(xué)生成績(百分制):指導(dǎo)教師簽名: 年 月 日