二叉树的结构及其遍历算法

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);
 }
}

 

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