本文共 2258 字,大约阅读时间需要 7 分钟。
从数据存储来看,数组存储方式和树的存储方式可以相互转换
数组 《------》 树
要求:在遍历数组arr时,仍然可以以前序遍历,中序遍历和后序遍历的方式来完成对结点的遍历。
图示:
八大排序算法中的堆排序,使用的就是顺序存储为叉树。
public void preOrder(){ this.preOrder(0);}//重载方法,是程序看起来更加干净简洁/**\ * * @param index 标识为数组的下标 * */public void preOrder(int index){ if (arr == null || arr.length == 0){ //有没有数组长度为0,还不为空的数组 //经过实验发现,确实存在如此蛋疼的数组 //两种情况,数组未初始化;已经初始化了,但是长度为0 System.out.println("树为空,无法遍历"); return; } System.out.println(arr[index]); if (2 * index + 1 < arr.length){ //下标小于数组的长度,说明没有越界 preOrder(2 * index + 1); } if (2 * index + 2 < arr.length){ preOrder(2 * index + 2); }}
public void midOrder(){ this.midOrder(0); }public void midOrder(int index){ //判定树是否存在或者是未初始化 if (arr == null || arr.length == 0){ System.out.println("the tree is empty"); return; } if (2 * index + 1 < arr.length){ midOrder(2 * index + 1); } System.out.print(arr[index] + "---"); if(2 * index + 2 < arr.length){ midOrder(2 * index + 2); } return; }
public void postOrder(){ this.postOrder(0); } public void postOrder(int index){ if(arr == null || arr.length == 0){ System.out.println("树为空,无法遍历"); return; } if (2 * index + 1 < arr.length){ postOrder(2 * index + 1); } if (2 * index + 2 < arr.length){ postOrder(2 * index + 2); } System.out.print(arr[index] + "---"); }
转载地址:http://sqgpb.baihongyu.com/