![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0d61331f2b6a150f66c41d327001805d.png)
就是逻辑上是二叉树,物理上是一个数组
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/76de3c8a6e5218e4ed3456de3a9c154f.png)
需求
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b2225c955350fd3dfe849fe93d872219.png)
package tree;
public class ArrayBinaryTreeDemo {
public static void main(String[] args) {
int arr [] = {1, 2, 3, 4, 5, 6, 7};
ArrayBinaryTree arrayBinaryTree = new ArrayBinaryTree(arr);
arrayBinaryTree.postOrder();
}
}
class ArrayBinaryTree{
private int [] arr;
public ArrayBinaryTree(int[] arr) {
this.arr = arr;
}
public void preOrder(){
this.preOrder(0);
}
public void infixOrder(){
this.infixOrder(0);
}
public void postOrder(){
this.postOrder(0);
}
public void preOrder(int index){
if (arr == null || arr.length == 0){
System.out.println("数组为空,不能遍历");
return;
}
System.out.println(arr[index]);
if ( (index * 2 + 1) < arr.length){
preOrder(2 * index + 1);
}
if ((index * 2 + 2) < arr.length){
preOrder(index * 2 + 2);
}
}
public void infixOrder(int index){
if (arr == null || arr.length == 0){
System.out.println("数组为空,不能遍历");
return;
}
if ((index * 2 + 1) < arr.length){
infixOrder(index * 2 + 1);
}
System.out.println(arr[index]);
if ((index * 2 + 2)<arr.length){
infixOrder(index * 2 + 2);
}
}
public void postOrder(int index){
if (arr == null || arr.length == 0){
System.out.println("数组为空,不能遍历");
return;
}
if ((index * 2 + 1) < arr.length){
infixOrder(index * 2 + 1);
}
if ((index * 2 + 2)<arr.length){
infixOrder(index * 2 + 2);
}
System.out.println(arr[index]);
}
}