从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。
package com.zx.ds.tree;
//顺序存储二叉树
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.length==0||arr==null){
System.out.println(" array is null..");
return;
}
//输出当前这个元素
System.out.println(arr[index]);
//向左递归遍历
if((index*2+1)<arr.length){
preOrder(index*2+1);
}
//向右递归遍历
if((index*2+1)<arr.length){
preOrder(index*2+2);
}
}
public void midOrder(){
this.midOrder(0);
}
public void midOrder(int index){
if(arr==null||arr.length==0){
System.out.println("array is null..");
return;
}
if(index*2+1<arr.length){
midOrder(index*2+1);
}
System.out.println(arr[index]);
if(index*2+2<arr.length){
midOrder(index*2+2);
}
}
}
public class ArrBinaryTreeDemo {
public static void main(String[] args) {
int array[]={1,2,3,4,5,6,7};
ArrBinaryTree arrBinaryTree=new ArrBinaryTree(array);
System.out.println("先序遍历");
//1 2 4 5 3 6 7
arrBinaryTree.preOrder();
System.out.println("中序遍历");
//4 2 5 1 6 3 7
arrBinaryTree.midOrder();
}
}
先序遍历
1
2
4
5
3
6
7
中序遍历
4
2
5
1
6
3
7