二叉樹的基本操作課程設計_第1頁
已閱讀1頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  《JAVA核心技術》</p><p><b>  課題設計報告</b></p><p>  課題名稱: 二叉樹的基本操作 </p><p>  專業(yè): 信息管理與信息系統(tǒng) </p><p>  班級: </p><p>  姓名:

2、 </p><p>  學號: </p><p>  指導老師: </p><p>  日期: 2013/10/29 </p><p><b>  課程序設計目的</b></p><p> ?。?

3、)掌握基于Java相關編程軟件的使用;</p><p> ?。?)掌握基于Java二叉樹的基本操作;</p><p>  (3)實現(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> ?。?)編程環(huán)境:JDK1.5,JCreator,Eclipse等</p><p><b>  實現(xiàn)過程</b></p><p> ?。?)Java編程基礎知識介紹</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> ?。?)概要設計</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> ?。?)詳細設計</b></p><p><b>  類名:Gao</b></p><p><b>  類功能簡介:</b></p><p>  構造服務器界面以及客戶端界面</p><p><b>  方法1:<

10、/b></p><p><b>  tree()</b></p><p><b>  功能:</b></p><p>  構造方法用來生成實例時由系統(tǒng)自動調用</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>  // 根據先序和中序來構建二叉樹 </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>  // 構造函數(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>  四、課題總結<

44、;/b></p><p><b>  (1)主要問題</b></p><p>  本程序的實現(xiàn)還比較簡單不夠完善,從中,我知道了自己的不足之處,決心 </p><p>  增長自己的知識,設計更加好的程序,實現(xiàn)各種更加復雜的功能。</p><p><b>  收獲</b></p>

45、;<p>  通過本次課程設計,使得自己懂得理論和實踐相結合起來,從理論中得出結論,才能真正掌握這門技術,也提高了自己獨立思考的能力,以前在本子上寫二叉樹,而現(xiàn)在用JAVA基礎就能實現(xiàn)。在設計的過程中,可以自己解決。組員們積極參與本課程設計的程序編寫,身為組長倍感欣慰。這次實訓對我很有幫助,讓我學會了不只是實現(xiàn)二叉樹的基本操作,更讓我學會主動學習,而不是被動接收。這樣才能更好的運用自己所學到的知識。</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論