2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論