标签:arr 树结构 int SeqStoreTree seqStoreTree 二叉树 数组 顺序存储
从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。
顺序存储二叉树特点
(1)顺序二叉树通常只考虑完全二叉树
(2)第n个元素的左子节点为 2 * n + 1
(3)第n个元素的右子节点为 2 * n + 2
(4)第n个元素的父节点为 (n-1) / 2
(5)n : 表示二叉树中的第几个元素(按0开始编号)
例子:给定数组 {1,2,3,4,5,6,7},使用树的遍历方式遍历数组
public static void main(String[] args) { int[] arr={1,2,3,4,5,6,7}; SeqStoreTree seqStoreTree=new SeqStoreTree(arr); seqStoreTree.prePrint(0);//1,2,4,5,3,6,7 seqStoreTree.midPrint(0);//4,2,5,1,6,3,7 seqStoreTree.postPrint(0);//4,5,2,6,7,3,1 } static class SeqStoreTree{ private int[] arr; public SeqStoreTree(int[] arr){ this.arr=arr; } //前序遍历 public void prePrint(int index){ if(this.arr==null||index<0){ System.out.println("数组为空"); return; } System.out.println(arr[index]); //递归遍历左节点 if(2*index+1<arr.length){ prePrint(2*index+1); } //递归遍历右节点 if(2*index+2<arr.length){ prePrint(2*index+2); } } //中序遍历 public void midPrint(int index){ if(this.arr==null||index<0){ System.out.println("数组为空"); return; } //递归遍历左节点 if(2*index+1<arr.length){ midPrint(2*index+1); } System.out.println(arr[index]); //递归遍历右节点 if(2*index+2<arr.length){ midPrint(2*index+2); } } //后序遍历 public void postPrint(int index){ if(this.arr==null||index<0){ System.out.println("数组为空"); return; } //遍历左节点 if(2*index+1<arr.length){ postPrint(2*index+1); } //遍历右节点 if(2*index+2<arr.length){ postPrint(2*index+2); } System.out.println(arr[index]); } }zuodaoyong 发布了66 篇原创文章 · 获赞 2 · 访问量 3138 私信 关注
标签:arr,树结构,int,SeqStoreTree,seqStoreTree,二叉树,数组,顺序存储 来源: https://blog.csdn.net/zuodaoyong/article/details/104125482
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。