二叉树的顺序存储,只讨论完全二叉树的顺序存储。
上图可是:
第n个节点的左孩子为 2n+1 右孩子为2n+2
第n个节点的父节点为 ( n-1)/2
任何一个数组可以当做二叉树来看待:
下面是顺序二叉树以及它的先序遍历
public class ArrayBinaryTree {
private int[] data;
public ArrayBinaryTree(int[] data) {
this.data = data;
}
//前序遍历
public void firstRead( int index) {
//先输出节点的信息
System.out.println(data[index]);
//递归左孩子
if((2*index+1)<data.length) {
firstRead(2*index+1);
}
//递归右孩子
if((2*index+2)<data.length) {
firstRead(2*index+2);
}
}
}