java实现-数据结构之二叉树(二):顺序存储二叉树

数据结构之二叉树(二):顺序存储二叉树

概念:
从数据存储来看,顺序存储二叉树就是数组储存方式和树的储存方式可以相互转换,即数组可以转化成树,树也可以转换成数组。
例如下图:
在这里插入图片描述
(顺序二叉树通常只考虑完全二叉树)
由上图可知,数组下标对应树节点序号。
二叉树的第n个节点的左子树的节点序号为2n+1;
二叉树的第n个节点的右子树的节点序号为2
n+2;
二叉树的第n个节点的父节点的节点序号为(n-1)/2;

由数组转换为二叉树的简单实现:

public class ArrayBinaryTreeDemo {
    
    
	public static void main(String[] args) {
    
    
		int arr[]= {
    
    1,2,3,4,5,6,7};
		ArrayBinaryTree abTree=new ArrayBinaryTree(arr);
		abTree.preShow(0);
	}
}

class ArrayBinaryTree{
    
    
	int arr[];
	public ArrayBinaryTree(int arr[]) {
    
    
		this.arr=arr;
	}
	
	//将数组转换为树后的前序遍历,index为数组下标
	public void preShow(int index) {
    
    
		if(arr==null||arr.length==0) {
    
    
			System.out.println("数组为空,转换树失败");
		}
		System.out.println(arr[index]);
		if((2*index+1)<arr.length) {
    
    
			preShow(2*index+1);
		}
		if((2*index+2)<arr.length) {
    
    
			preShow(2*index+2);
		}
	}
}

输出的前序遍历结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45273552/article/details/109080102