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

    主要应用

    • 堆排序
  • 相关阅读:
    【LeetCode】048. Rotate Image
    【LeetCode】036. Valid Sudoku
    【LeetCode】060. Permutation Sequence
    【LeetCode】001. Two Sum
    【LeetCode】128. Longest Consecutive Sequence
    【LeetCode】081. Search in Rotated Sorted Array II
    【LeetCode】033. Search in Rotated Sorted Array
    顺时针打印矩阵
    矩形覆盖
    二维数组中的查找
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/11837703.html
Copyright © 2011-2022 走看看