順序數組實現二叉樹
實現原理
對於下標為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);
}
}
主要應用
- 堆排序