二叉树的4种遍历方式(前序、中序、后序、层次)Java版

二叉树的4种遍历(前序、中序、后序、层次)

package TestDemo;

import java.util.LinkedList;
import java.util.Queue;

public class Test1 {
	private int data;
	private Test1 lchild;
	private Test1 rchild;
	
	public Test1(int data){
		this.data=data;
	}
	
	//前序遍历
	public static void preOrder(Test1 t){
		if(t==null) return;
		System.out.print(t.data+" ");
		preOrder(t.lchild);
		preOrder(t.rchild);
	}
	
	//中序遍历
	public static void inOrder(Test1 t){
		if(t==null) return;
		preOrder(t.lchild);
		System.out.print(t.data+" ");
		preOrder(t.rchild);
	}
	
	//后序遍历
	public static void PostOrder(Test1 t){
		if(t==null) return;
		preOrder(t.lchild);
		preOrder(t.rchild);
		System.out.print(t.data+" ");
	}
	
	//层次遍历
	public static void levelOrder(Test1 t){
		if(t==null) return ;
		Queue queue=new LinkedList (); 
		queue.offer(t);
		Test1 current=null;
		while(!queue.isEmpty()){
			current=queue.poll();
			System.out.print(current.data+"->");
			if(current.lchild!=null){
				queue.offer(current.lchild);
			}
			if(current.rchild!=null){
				queue.offer(current.rchild);
			}
		}
	}
	
	public static void main(String[] args) {
		Test1 b1=new Test1(1);
		Test1 b2=new Test1(2);
		Test1 b3=new Test1(3);
		Test1 b4=new Test1(4);
		Test1 b5=new Test1(5);
		
		b1.lchild=b2;
		b1.rchild=b3;
		b2.lchild=b4;
		b2.rchild=b5;
		
		//递归遍历方式
		System.out.print("前序遍历:");
		Test1.preOrder(b1);						//前序
		System.out.println();
		System.out.print("中序遍历:");
		Test1.inOrder(b1);						//中序
		System.out.println();
		System.out.print("后序遍历:");
		Test1.PostOrder(b1);					//后序
		System.out.println();
		System.out.print("层次遍历:");
		Test1.levelOrder(b1);				    //层次
		System.out.println();
	}
}

你可能感兴趣的:(数据结构与算法)