java实现 二叉树遍历

哈~ 今年刚学Java,感觉和C#有异曲同工之妙,呵呵,准备开始写博,记录自己学Java的点滴……

 

//接口
public interface BinTrees {
 
 public void Firorder();
 public void Secorder();
 public void Inorder();
 
 public void Insert(Node node);
 
}

 

//接口
public interface Nodeinter {
 
 public void Append(Node node);
 public void AppendLeft(Node node);
 public void AppendRight(Node node);

}

 

class Node implements Nodeinter{
 
 public int nodeNata;
 public Node left;
 public Node right;
 
 public Node(int data)
 {
  this.nodeNata=data;
 }
 
 //追加结点
 public void Append(Node node)
 {
  if(node.nodeNata <= this.nodeNata)
  {
   this.AppendLeft(node);
  }
  else
  {
   this.AppendRight(node);
  }
  
 }
 
 //追加左子
 public void AppendLeft(Node node)
 {
  if(this.left==null)
  {
   this.left=node;
  }
  else
  {
   this.left.Append(node);
  }
 }
 //追加右子
 public void AppendRight(Node node)
 {
  if(this.right==null)
  {
   this.right=node;
  }
  else
  {
   this.right.Append(node);
  }
 } 
 
 //打印结点
 public void print()
 {
  if(this.nodeNata!='#')
  {
   System.out.println(this.nodeNata);
  }
  else
  {
   System.out.println('#');
  }
 }
}

 


public class BinTree implements BinTrees {
 
 public Node root=null;
 
 public BinTree(Node n)
 {
  this.root=n;
 }
 
 
 //添加结点
 public void Insert(Node node)
 {
  if(this.root==null)
  {
   this.root=node;
  }
  else
  {
   this.root.Append(node);
  }
 }
 
 public void Firorder()
 {
  this.FirOrder(root);
 }
 public void Secorder()
 {
  this.LasOrder(root);
 }
 public void Inorder()
 {
  this.InOrder(root);
 }
 
 //中序遍历递归算法
 public void InOrder(Node node)
 {
  if(node!=null)
  {
   this.InOrder(node.left);
   node.print(); 
   this.InOrder(node.right);
  }
 }
 
 //先序遍历递归算法
 public void FirOrder(Node node)
 {
  if(node!=null)
  {
   node.print();
   this.FirOrder(node.left);
   this.FirOrder(node.right);
  }
 }
 
 //后序遍历递归算法
 public void LasOrder(Node node)
 {
  if(node!=null)
  {
   this.LasOrder(node.left);
   this.LasOrder(node.right);
   node.print();
  }
 }
 

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Node n1=new Node(7);
  Node n2=new Node(9);
  Node n3=new Node(3);
  Node n4=new Node(8);
  Node n5=new Node(2);
  Node n6=new Node(6);
  
  
  BinTree bt=new BinTree(n1);
  bt.Insert(n2);
  bt.Insert(n3);
  bt.Insert(n4);
  bt.Insert(n5);
  bt.Insert(n6);
  
  
  
  bt.Inorder();
  bt.Firorder();
  bt.Secorder();
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值