顺序存储二叉树的特点:(数组转顺序存储二叉树)
1)顺序二叉树通常只考虑完全二叉树
2)第n个元素的左子节点为2^n+1
3) 第n个元素的右子节点为2^n+2
4) 第n个元素的父节点为(n-1)/2
5) n:表示二叉树中的第几个元素(按0开始编号
如图所示)
代码实现:
public class ArrayBinaryTreeDemo {
public static void main(String[] args) {
int arr[] = {1,2,3,4,5,6,7};
ArrBinaryTree tree = new ArrBinaryTree(arr);
tree.preOrder();
}
}
/*
* 编写ArrBinaryTree类,实现顺序存储二叉树遍历
* */
class ArrBinaryTree{
private int[] arr; //存储数据节点的数据
public ArrBinaryTree(int[] arr) {
this.arr = arr;
}
//重载preOrder
public void preOrder(){
this.preOrder(0);
}
//编写一个方法,完成顺序存储二叉树的前序遍历
public void preOrder(int index){
//如果数组为空或者arr.length = 0
if(arr == null || arr.length == 0){
System.out.println("数组为空,不能二叉树的前序遍历");
}
//输出这个这个元素
System.out.println(arr[index]);
//向左递归遍历
if ((index*2 + 1) < arr.length){
preOrder(index*2 + 1);
}
//向右递归遍历
if ((index*2 + 2) < arr.length){
preOrder(index*2 + 2);
}
}
}