前言
一、顺序存储二叉树
使用数组对二叉树的每个结点从左至右依次进行存储。
二、实现
1.前序、中序、后序遍历
代码如下(示例):
class ArrBinaryTree{
private int[] arr;
public ArrBinaryTree(int[] arr) {
this.arr = arr;
}
// 重载
public void preOrder(){
this.preOrder(0);
}
public void inOrder(){
this.inOrder(0);
}
public void postOrder(){
this.postOrder(0);
}
//前序遍历
public void preOrder(int index){
if(arr == null || arr.length == 0){
System.out.println("数组为空,不能遍历");
}
System.out.print(arr[index] + " ");
if((index*2 + 1) < arr.length){
preOrder(index*2 + 1);
}
if((index*2 + 2) < arr.length){
preOrder(index*2 + 2);
}
}
//中序遍历
public void inOrder(int index){
if(arr == null || arr.length == 0){
System.out.println("数组为空,不能遍历");
}
if((index*2 + 1) < arr.length){
inOrder(index*2 + 1);
}
System.out.print(arr[index] + " ");
if((index*2 + 2) < arr.length){
inOrder(index*2 + 2);
}
}
//后续遍历
public void postOrder(int index){
if(arr == null || arr.length == 0){
System.out.println("数组为空,不能遍历");
}
if((index*2 + 1) < arr.length){
postOrder(index*2 + 1);
}
if((index*2 + 2) < arr.length){
postOrder(index*2 + 2);
}
System.out.print(arr[index] + " ");
}
}