参考书籍:《算法4》,学习视频: 尚硅谷Java数据结构与java算法(Java数据结构与算法)_哔哩哔哩_bilibili
从数据存储来看,数组存储方式和数的存储方式可以相互转换,数也可以转换成数组。
- 上图二叉树的结点,以数组形式存放arr[1,2,3,4,5,6]
- 在遍历数组arr时,仍然可以以前序遍历,中序遍历和后序遍历的方式完成结点的遍历
顺序二叉树通常只考虑完全二叉树
- n为数组下标
- 第n个元素的左子结点为2*n+1
- 第n个元素的右子结点为2*n+2
- 第n个元素的父结点为(n-1)/2
代码实现
public class Arrybinarytreedemo {
public static void main(String[] args)
{
int [] arr= {1,2,3,4,5,6,7};
Arrbinarytree arrbinarytree=new Arrbinarytree(arr);
arrbinarytree.preOrder(0);//1,2,4,5,3,6,7
}
}
//编写一个Arraybinarytree,实现顺序存储二叉树遍历
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);
}
}
}
学习如逆水行舟,不进则退。和小吴一起加油吧!