zoukankan      html  css  js  c++  java
  • 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);
    		
    	}
    }
    
    

    主要应用

    • 堆排序
  • 相关阅读:
    JS中iframe子页面与父页面之间通信
    .NET 大数据量并发解决方案
    angular的性能分析 -随记
    第二次作业
    自我介绍
    总结作业
    2019春第四次课程设计实验报告
    2019春第三次课程设计实验报告
    2019春第二次课程设计实验报告
    第十二周作业
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/11837703.html
Copyright © 2011-2022 走看看