java使用順序數組實現二叉樹


順序數組實現二叉樹

實現原理

對於下標為index的節點其滿足

1.左孩子節點的下標為2index+1
2.右孩子節點的下標為2index+2

代碼實現

package tree;

public class ArrayBinaryTree {
	private int[] arr;
	
	public ArrayBinaryTree(int[] arr)
	{
		this.arr=arr;
	}
	
	public void preOrder(int index)
	{
		if(arr==null||arr.length==0)
		{
			System.out.println("數組為空,不可以按照二叉樹的前序遍歷");
		}
		System.out.println(arr[index]);
		//向左進行前序遍歷
		if(index*2+1<arr.length)//防止數組下標越界
		{
			preOrder(2*index+1);
		}
		//向右遞歸
		if(index*2+2<arr.length)
		{
			preOrder(2*index+2);
		}
		
	}
	
	public void infixOrder(int index)
	{
		if(arr==null||arr.length==0)
		{
			System.out.println("數組為空,不可以按照二叉樹來進行遍歷~");
		}
		if(2*index+1<arr.length)
		{
			infixOrder(2*index+1);
		}
		System.out.println(arr[index]);
		if(2*index+2<arr.length)
		{
			infixOrder(2*index+2);
		}
		
	}
	
	
	public void postOrder(int index)
	{
		if(arr==null||arr.length==0)
		{
			System.out.println("數組為空,不可以按照二叉樹來進行遍歷~");
		}
		if(2*index+1<arr.length)
		{
			infixOrder(2*index+1);
		}
		System.out.println(arr[index]);
		if(2*index+2<arr.length)
		{
			infixOrder(2*index+2);
		}
		System.out.println(arr[index]);
	}
	
}

package tree;

public class ArrayBinaryTreeDemo {
	public static void main(String[] args) {
		int[] arr= {1,2,3,4,5,6,7,};
		ArrayBinaryTree arrBinaryTree=new ArrayBinaryTree(arr);
		arrBinaryTree.preOrder(0);
		arrBinaryTree.infixOrder(0);
		arrBinaryTree.postOrder(0);
		
	}
}

主要應用

  • 堆排序


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM