顺序存储二叉树的概念
从数据存储来看,数组存储方式和树
的存储方式可以相互转换,即数组可
以转换成树,树也可以转换成数组,
看示意图。
要求:
1)
右图的二叉树的结点,要求以数组
的方式来存放 arr : [1, 2, 3, 4, 5, 6, 6]
的方式来存放 arr : [1, 2, 3, 4, 5, 6, 6]
2)
要求在遍历数组
arr
时,仍然可以以
前序遍历 , 中序遍历 和 后序遍历 的
方式完成结点的遍历
前序遍历 , 中序遍历 和 后序遍历 的
方式完成结点的遍历
代码实现:
package com.liu.Binarytree;
public class ArrayBinaryTree {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5, 6, 7 };
//创建一个 ArrBinaryTree
ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr);
arrBinaryTree.preOrder();
}
}
class ArrBinaryTree{
private int arry[];
public ArrBinaryTree(int[] arry) {
super();
this.arry = arry;
}
public void preOrder() {
this.preOrder(0);
}
private void preOrder(int index) {
// TODO Auto-generated method stub
if(arry == null || arry.length == 0) {
System.out.println("数组为空,不能按照二叉树的前序遍历");
}
System.out.println(arry[index]);
if((index * 2 + 1) < arry.length) {
preOrder(2 * index + 1 );
}
//向右递归遍历
if((index * 2 + 2) < arry.length) {
preOrder(2 * index + 2);
}
}
}