1.什么是顺序二叉树
- 二叉树的存储结构有两种,分别为顺序存储和链式存储。本节先介绍二叉树的顺序存储结构。
- 二叉树的顺序存储,指的是使用顺序表(数组)存储二叉树。需要注意的是,顺序存储只适用于完全二叉树。换句话说,只有完全二叉树才可以使用顺序表存储。因此,如果我们想顺序存储普通二叉树,需要提前将普通二叉树转化为完全二叉树。
- 有读者会说,满二叉树也可以使用顺序存储。要知道,满二叉树也是完全二叉树,因为它满足完全二叉树的所有特征。
- 普通二叉树转完全二叉树的方法很简单,只需给二叉树额外添加一些节点,将其"拼凑"成完全二叉树即可。如图 1 所示:
2.顺序二叉树的特点
- 打个比方:根节点的左子节点为 2 * 0 +1 = 1 ,右子节点 2 + 0 +2 = 2
3.代码实现
package com.qin.tree;
public class ArrayBinaryTreeDemo {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7};
ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr);
arrBinaryTree.preOrder(0);
}
}
class ArrBinaryTree{
private int[] arr;
public ArrBinaryTree(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);
}
}
}