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