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);
		
	}
}

主要应用

  • 堆排序
原文地址:https://www.cnblogs.com/mengxiaoleng/p/11837703.html