天天看點

二叉樹的周遊以及将二叉樹倒置90°列印輸入(遞歸)

class Tree{
	public static void main(String args[]){
	
		
	//	葉子節點
		TreeModels t15=new TreeModels(null,null,15);
		TreeModels t14=new TreeModels(null,null,14);
		TreeModels t13=new TreeModels(null,null,13);
		TreeModels t12=new TreeModels(null,null,12);
		TreeModels t11=new TreeModels(null,null,11);
		TreeModels t10=new TreeModels(null,null,10);
		TreeModels t9=new TreeModels(null,null,9);
		TreeModels t8=new TreeModels(null,null,8);
	//内部節點
		TreeModels t7=new TreeModels(t14,t15,7);
		TreeModels t6=new TreeModels(t12,t13,6);
		TreeModels t5=new TreeModels(t10,t11,5);
		TreeModels t4=new TreeModels(t8,t9,4);
		TreeModels t3=new TreeModels(t6,t7,3);
		TreeModels t2=new TreeModels(t4,t5,2);
	//根節點
		TreeModels t1=new TreeModels(t2,t3,1);
		System.out.println("先序");
			preGet(t1);
		System.out.print("\r\n中序\r\n");
			orGet(t1);
			System.out.println("\r\n後序");
			LaGet(t1);
			System.out.println("\r\n");
			RorGetTree(t1,0);


}
	public static void preGet(TreeModels root){//先序
		if(root!=null){	
			
			System.out.print(root.getData()+" ");

			preGet(root.getLeft());

			preGet(root.getRight());

	
		}
	}
	public static  void  orGet(TreeModels root){//中序
		if(root!=null){
			orGet(root.getLeft());

			System.out.print(root.getData()+" ");
			orGet(root.getRight());
		
		}
		
	}
	public static  void  LaGet(TreeModels root){//後續
		if(root!=null){
			

			LaGet(root.getLeft());
			LaGet(root.getRight());
			
			System.out.print(root.getData()+" ");
		
		}
		
	}
	
	
	public static void RorGetTree(TreeModels root,int deep){//将二叉樹90°倒置
		if(root==null) return;
		RorGetTree(root.getRight(),deep+1);
		for(int i=0;i<deep;i++)
				System.out.print("     ");
			System.out.println(root.getData());
			
		
		RorGetTree(root.getLeft(),deep+1);

	}
}

class TreeModels{//建立一個樹模型

	private TreeModels left;
	private TreeModels right;
	private int data;

	public TreeModels(TreeModels left,TreeModels right,int data){
	
		this.left=left;
		this.right=right;
		this.data=data;
	}
	public void setLeft(TreeModels left){
		this.left=left;
	}
	public void setRight(TreeModels right){
		this.right=right;
	}
	public void setLeft(int data){
		this.data=data;
	}
	public TreeModels getLeft(){
	
		return left;
	}
	public TreeModels getRight(){
	
		return right;
	}
	public int getData(){
	
		return data;
	}	
}
           

下面是運作結果:

二叉樹的周遊以及将二叉樹倒置90°列印輸入(遞歸)