版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《JAVA核心技術(shù)》</p><p><b> 課題設(shè)計報告</b></p><p> 課題名稱: 二叉樹的基本操作 </p><p> 專業(yè): 信息管理與信息系統(tǒng) </p><p> 班級: </p><p> 姓名:
2、 </p><p> 學(xué)號: </p><p> 指導(dǎo)老師: </p><p> 日期: 2013/10/29 </p><p><b> 課程序設(shè)計目的</b></p><p> ?。?
3、)掌握基于Java相關(guān)編程軟件的使用;</p><p> (2)掌握基于Java二叉樹的基本操作;</p><p> ?。?)實現(xiàn)對一棵二叉樹的基本操作。</p><p><b> 開發(fā)環(huán)境</b></p><p> (1)系統(tǒng)環(huán)境:Windows XP,Windows 2003 Server,Windows 7;
4、</p><p> (2)編程環(huán)境:JDK1.5,JCreator,Eclipse等</p><p><b> 實現(xiàn)過程</b></p><p> ?。?)Java編程基礎(chǔ)知識介紹</p><p> 1.Tree(); </p><p> Tree buildTree(Stri
5、ng pre, String in); //由嵌套括號表示法的字 </p><p> 符串生成鏈接存儲的二叉樹;</p><p> 3.void printtree(); //按嵌套括號表示法打印二叉樹;</p><p> 4.void prevorder(); //前序遍歷;</p>
6、<p> 5.void postorder(); //后序遍歷;</p><p> 6.void inorder(); //中序遍歷;</p><p> 7.void levelOrder();//層次遍歷</p><p> 8.int leafNum(); //求葉子節(jié)點數(shù);</p><p> 9.
7、int treedepth(); //求二叉樹深度。 </p><p><b> ?。?)概要設(shè)計</b></p><p> 二叉樹: </p><p><b> a </b></p><p><b> / \</b></p&
8、gt;<p><b> / \</b></p><p> b i </p><p> / \ / \</p><p> c f i m </p><p> / \ / \ / \ /\</p><p> d e g h k l n o&l
9、t;/p><p><b> ?。?)詳細設(shè)計</b></p><p><b> 類名:Gao</b></p><p><b> 類功能簡介:</b></p><p> 構(gòu)造服務(wù)器界面以及客戶端界面</p><p><b> 方法1:<
10、/b></p><p><b> tree()</b></p><p><b> 功能:</b></p><p> 構(gòu)造方法用來生成實例時由系統(tǒng)自動調(diào)用</p><p><b> 方法2:</b></p><p> Tree buildT
11、ree(String pre, String in)</p><p><b> 功能:</b></p><p> 生成鏈接存儲的二叉樹</p><p><b> 方法3:</b></p><p> void printtree()</p><p><b>
12、 功能:</b></p><p> 按嵌套括號表示法打印二叉樹</p><p><b> 方法4:</b></p><p> void prevorder()</p><p><b> 功能:</b></p><p><b> 先序遍歷<
13、/b></p><p><b> 方法5:</b></p><p> void postorder()</p><p><b> 功能:</b></p><p><b> 后序遍歷</b></p><p><b> 方法6:&l
14、t;/b></p><p> void inorder()</p><p><b> 功能:</b></p><p><b> 中序遍歷</b></p><p><b> 方法7:</b></p><p> void levelOrder
15、()</p><p><b> 功能:</b></p><p><b> 層次遍歷</b></p><p><b> 方法8:</b></p><p> int leafNum()</p><p><b> 功能:</b>
16、</p><p><b> 求葉子節(jié)點數(shù)</b></p><p><b> 方法9:</b></p><p> int treedepth()</p><p><b> 功能:</b></p><p><b> 求二叉樹的深度<
17、/b></p><p><b> ?。?)運行程序截圖</b></p><p><b> 附:程序源代碼</b></p><p> import java.util.ArrayDeque; </p><p> import java.util.Queue; </p><
18、;p> public class Gao { </p><p> public static void main(String[] args) { </p><p> // 測試Tree </p><p> Tree node = buildTree(null, 1); </p><p> System.out.print(&
19、quot;先序遍歷:"); </p><p> preOrder(node); </p><p> System.out.println(); </p><p> System.out.print("中序遍歷:"); </p><p> inOrder(node); </p><p&g
20、t; System.out.println(); </p><p> System.out.print("后序遍歷:"); </p><p> postOrder(node); </p><p> System.out.println(); </p><p> System.out.print("層次遍
21、歷:"); </p><p> levelOrder(node); </p><p> System.out.println(); </p><p> System.out.print("葉子節(jié)點數(shù)目:"); </p><p> System.out.println(leafNum(node)); <
22、;/p><p> System.out.print("二叉樹的深度:"); </p><p> System.out.println(deep(node)); </p><p><b> } </b></p><p> static char i = 'a';// 節(jié)點 </
23、p><p> public static Tree buildTree(Tree node, int k) { </p><p> if (k > 4) </p><p> return null; </p><p> if (node == null) { </p><p> node = new Tre
24、enode(" " + i++); </p><p><b> } </b></p><p> node.lChild = buildTree(node.lChild, k + 1); </p><p> node.rChild = buildTree(node.rChild, k + 1); </p>
25、<p> return node; </p><p><b> } </b></p><p> // 根據(jù)先序和中序來構(gòu)建二叉樹 </p><p> public Tree buildTree(String pre, String in) { </p><p> if (pre.length() &l
26、t;= 0) </p><p> return null; </p><p> Treenode root = new Tree(pre.charAt(0) + ""); </p><p> // 以根節(jié)點為中心,將中序分為兩個子序列 </p><p> String leftin = "";
27、</p><p> String rightin = ""; </p><p> // 根所左中序的長度,將先序分為左右兩個子先序 </p><p> String leftpre = ""; </p><p> String rightpre = ""; </p>
28、;<p> root.lChild = buildTree(leftpre, leftin); </p><p> root.rChild = buildTree(rightpre, rightin); </p><p> return root; </p><p><b> } </b></p><p
29、><b> // 先序遍歷 </b></p><p> public static void preOrder(Tree node) { </p><p> if (node != null) { </p><p> System.out.print(node.data); </p><p> preOr
30、der(node.lChild); </p><p> preOrder(node.rChild); </p><p><b> } </b></p><p><b> } </b></p><p><b> // 中序遍歷 </b></p><p&
31、gt; public static void inOrder(Tree node) { </p><p> if (node != null) { </p><p> inOrder(node.lChild); </p><p> System.out.print(node.data); </p><p> inOrder(node
32、.rChild); </p><p><b> } </b></p><p><b> } </b></p><p><b> // 后序遍歷 </b></p><p> public static void postOrder(Tree node) { </p&
33、gt;<p> if (node != null) { </p><p> postOrder(node.lChild); </p><p> postOrder(node.rChild); </p><p> System.out.print(node.data); </p><p><b> } <
34、/b></p><p><b> } </b></p><p><b> // 層次遍歷 </b></p><p> public static void levelOrder(Tree node) { </p><p> if (node == null) </p>&
35、lt;p><b> return; </b></p><p> Queue<Tree> queue = new ArrayDeque<Tree>(); </p><p> queue.add(node); </p><p> while (!queue.isEmpty()) { </p>&l
36、t;p> Tree temp = queue.poll(); </p><p> System.out.print(temp.data); </p><p> if (temp.lChild != null) </p><p> queue.add(temp.lChild); </p><p> if (temp.rChild
37、 != null) </p><p> queue.add(temp.rChild); </p><p><b> } </b></p><p><b> } </b></p><p> // 求樹的葉子節(jié)點數(shù) </p><p> public static int
38、 leafNum(Tree node) { </p><p> if (node != null) { </p><p> if (node.lChild == null && node.rChild == null) { </p><p> return 1; </p><p><b> } </b&
39、gt;</p><p> return leafNum(node.lChild)+leafNum(node.rChild); </p><p><b> } </b></p><p> return 0; </p><p><b> } </b></p><p>
40、//求二叉樹的深度 </p><p> public static int deep(Tree node){ </p><p> if(node == null)return 0; </p><p> if(node.lChild==null&&node.rChild==null)return 1; </p><p>
41、 return leafNum(node.lChild)+leafNum(node.rChild); </p><p><b> } </b></p><p><b> } </b></p><p> class Tree { </p><p> public String data; &l
42、t;/p><p> public Tree lChild; </p><p> public Tree rChild; </p><p><b> // 構(gòu)造函數(shù) </b></p><p> public Tree(String data) { </p><p> this.data = d
43、ata; </p><p> this.lChild = null; </p><p> this.rChild = null; </p><p><b> } </b></p><p><b> } </b></p><p><b> 四、課題總結(jié)<
44、;/b></p><p><b> (1)主要問題</b></p><p> 本程序的實現(xiàn)還比較簡單不夠完善,從中,我知道了自己的不足之處,決心 </p><p> 增長自己的知識,設(shè)計更加好的程序,實現(xiàn)各種更加復(fù)雜的功能。</p><p><b> 收獲</b></p>
45、;<p> 通過本次課程設(shè)計,使得自己懂得理論和實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正掌握這門技術(shù),也提高了自己獨立思考的能力,以前在本子上寫二叉樹,而現(xiàn)在用JAVA基礎(chǔ)就能實現(xiàn)。在設(shè)計的過程中,可以自己解決。組員們積極參與本課程設(shè)計的程序編寫,身為組長倍感欣慰。這次實訓(xùn)對我很有幫助,讓我學(xué)會了不只是實現(xiàn)二叉樹的基本操作,更讓我學(xué)會主動學(xué)習(xí),而不是被動接收。這樣才能更好的運用自己所學(xué)到的知識。</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二叉樹的基本操作課程設(shè)計
- 二叉樹課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-二叉樹的基本操作
- 遍歷二叉樹課程設(shè)計
- 課程設(shè)計 排序二叉樹
- 課程設(shè)計---二叉樹的查找
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---二叉樹的操作
- 平衡二叉樹匹配課程設(shè)計
- 平衡二叉樹匹配課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計--線索二叉樹的基本操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--二叉樹的相關(guān)操作
- 課程設(shè)計---完全二叉樹的判斷
- 課程設(shè)計---判斷完全二叉樹
- 二叉樹論文 二叉樹的應(yīng)用
- 二叉樹數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- ds課程設(shè)計報告--平衡二叉樹
- 《數(shù)據(jù)結(jié)構(gòu)遍歷二叉樹》課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----二叉樹的應(yīng)用
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計--二叉排序樹調(diào)整為平衡二叉樹
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--二叉樹的遍歷
評論
0/150
提交評論