请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来....

先转载过来以后再研究

import   java.io.*;   
  import   java.util.Stack;   
    
  public   class   myTest   {   
  private   myTree   tree;   
    
    
  /**   
  *二叉树的插入,参数为(关键字,数据)   
  *   
  **/   
  public   void   insert(int   key,   int   data)   
  {   
  if(tree   ==   null)   
  {   
  tree   =   new   myTree();   
  tree.key   =   key;   
  tree.data   =   data;   
  }   
  else   
  {   
  myTree   newTree   =   new   myTree();   
  newTree.key   =   key;   
  newTree.data   =   data;   
  myTree   parent   =   tree;   
  while(true)   
  {   
  if(   newTree.key   <   parent.key)   
  {   
  if(   parent.leftChild   ==   null)   
  {   
  parent.leftChild   =   newTree;   
  return;   
  }   
  else   
  {   
  parent   =   parent.leftChild;   
  }   
  }   
  else   if(   newTree.key   >   parent.key)   
  {   
  if(parent.rightChild   ==   null)   
  {   
  parent.rightChild   =   newTree;   
  return;   
  }   
  else   
  {   
  parent   =   parent.rightChild;   
  }   
  }   
  }   
    
  }   
  }   
    
  /**   
    *   二叉树的查找,参数为(关键字),返回值为   myTree的一个实例   
    *     
    *   **/   
  public   myTree   find(int   key)   
  {   
  if(   tree   ==   null   )   return   null;   
  myTree   curr   =   new   myTree();   
  curr.key   =   key;   
  myTree   parent   =   tree;   
  while(true)   
  {   
  if(   parent   ==   null)   
  {   
  return   null;   
  }   
  else   if(   curr.key   ==   parent.key)   
  {   
  return   parent;   
  }   
  else   if(   curr.key   >   parent.key)   
  {   
  parent   =   parent.rightChild;   
  }   
  else   if(   curr.key   <   parent.key)   
  {   
  parent   =   parent.leftChild;   
  }   
  }   
  }   
    
    
    
  /*   
    *     
    *   递归的二叉树中序遍历   
    *     
    *     
    */   
  private   static   void   midOrder(myTree   tree)   
  {   
  if(tree   !=   null   )   
  {   
  midOrder(tree.leftChild);   
  System.out.println(tree+","+tree.key+","+tree.data);   
  midOrder(tree.rightChild);   
  }   
  }   
    
                      
  /*   
    *   前序遍历     
    */   
  private   static   void   frontOrder(myTree   tree)   
  {   
  if(tree   !=   null)   
  {   
  System.out.println(""+tree.key+"   ,   "+tree.data);   
  frontOrder(tree.leftChild);   
  frontOrder(tree.rightChild);   
  }   
  }   
    
    
  public   static   void   main(String[]   args)     
  {   
  System.out.println("Tree   view   Begin");   
  myTest   t1   =   new   myTest();   
  t1.insert(8,25);   
  t1.insert(5,9);   
  t1.insert(58,87);   
  t1.insert(13,82);   
  t1.insert(4,8);   
  t1.insert(12,54);   
  t1.insert(53,123);   
  t1.insert(56,47);   
  t1.insert(2,75);   
  t1.insert(34,5);   
  t1.insert(6,23);   
  System.out.println("现在开始遍历:");   
  midOrder2(t1.tree);   
  midOrder(t1.tree);   
  }   
  }

 

黑色头发  http://heisetoufa.iteye.com

如果发现本文有误,欢迎批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值