二叉樹的結構及其遍歷算法

1.BinaryTree.java
/**
 * 前序遍歷二叉樹。先根結點,再左結點,
 * 如無再右結點,如此遞歸至搜索完畢。
 */
package com.binarytree;
public class BinaryTree {
 int data;
 BinaryTree leftpoiter;
 BinaryTree rightpoiter;
 BinaryTree(int data) {
  this.data = data;
  leftpoiter = null;
  rightpoiter = null;
 }
 public void insertTree(BinaryTree root, int data) {
  if (data >= root.data) {
   if (root.rightpoiter == null) {
    root.rightpoiter = new BinaryTree(data);
   } else {
    insertTree(root.rightpoiter, data);
   }
  } else {
   if (root.leftpoiter == null) {
    root.leftpoiter = new BinaryTree(data);
   } else {
    insertTree(root.leftpoiter, data);
   }
  }
 }
}

2.BinaryTreeTest.java
package com.binarytree;
public class BinaryTreeTest {
 public static void main(String args[])
 {
 BinaryTreeTest b=new BinaryTreeTest();
 int data[]={12,11,34,45,67,89,56,43,22,98};
 BinaryTree root =new BinaryTree(data[0]);
 System.out.print("二叉樹的中的數據:  ");
 for(int i=1;i<data.length;i++){
 root.insertTree(root,data[i]);
 System.out.print(data[i-1]+";");
 }
 System.out.println(data[data.length-1]);
 int key=Integer.parseInt(args[0]);
 if(b.searchkey(root,key))
 {
 System.out.println("找到了:"+key);
 }
 else
 {
 System.out.println("沒有找到:"+key);
 }
 }
 public boolean searchkey(BinaryTree root, int key)
 {
 boolean bl=false;
 if(root==null)
 {
 bl=false;
 return bl;
 }
 else if(root.data==key)
 {
 bl=true;
 return bl;
 }
 else if(key>=root.data)
 {
 return searchkey(root.rightpoiter,key);
 }
 return searchkey(root.leftpoiter,key);
 }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章