java版的二叉树的 前序、中序、后序、层序 遍历

1、创建链表结构对象

public class Note {
public int date;
public Note dateleft;
public Note dateright;
public Note(int date,Note dateleft,Note dateright){
this.date = date;
this.dateleft = dateleft;
this.dateright = dateright;
}
public int getDate() {
return date;
}
public void setDate(int date) {
this.date = date;
}
public Note getDateleft() {
return dateleft;
}
public void setDateleft(Note dateleft) {
this.dateleft = dateleft;
}
public Note getDateright() {
return dateright;
}
public void setDateright(Note dateright) {
this.dateright = dateright;
}
}

2、遍历方法

public class demo {
public  Note inti(){

Note h = new Note(8,null,null);
Note g = new Note(7,null,null);
Note f = new Note(6,null,h);
Note e = new Note(5,g,null);
Note d = new Note(4,null,null);
Note c = new Note(3,null,f);
Note b = new Note(2,d,e);
Note a = new Note(1,b,c);
return a;
}
public  void printNote(Note n){
System.out.print(n.getDate());
}
/**
* 前序
* @param n
*/
public void firstTraversal(Note n){
printNote(n);
if(n.getDateleft()!=null){
firstTraversal(n.getDateleft());
}
if(n.getDateright()!=null){
firstTraversal(n.getDateright());
}
}
/**
* 中序
* @param n
*/
public void inderTraversal(Note n){
if(n.getDateleft()!=null){
inderTraversal(n.getDateleft());
}
printNote(n);
if(n.getDateright()!=null){
inderTraversal(n.getDateright());
}
}
/**
* 后序
* @param n
*/
public void endTraversal(Note n){
if(n.getDateleft()!=null){
endTraversal(n.getDateleft());
}
if(n.getDateright()!=null){
endTraversal(n.getDateright());
}
printNote(n);
}
/**
* 层序
* @param args
*/

public void levelIterator(Note n)  
 {  
     if(n == null)  
     {  
         return ;  
     }  
     LinkedList<Note> queue = new LinkedList<Note>();  
     Note current = null;  
     queue.offer(n);//将根节点入队  
     while(!queue.isEmpty())  
     {  
         current = queue.poll();//出队队头元素并访问  
         System.out.print(current.date);  
         if(current.dateleft != null)//如果当前节点的左节点不为空入队  
         {  
             queue.offer(current.dateleft);  
         }  
         if(current.dateright != null)//如果当前节点的右节点不为空,把右节点入队  
         {  
             queue.offer(current.dateright);  
         }  
     }  
 }
public static void main(String[] args) {
demo s = new demo();
Note n = s.inti();
System.out.println("前序");
s.firstTraversal(n);
System.out.println("");
System.out.println("中序");
s.inderTraversal(n);
System.out.println("");
System.out.println("后序");
s.endTraversal(n);
System.out.println("");
System.out.println("层序");
s.levelIterator(n);
}


}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值