使用一维数组存储二叉树--Java版
2017-08-09 08:51
357 查看
package com.datastructure; /*** * 需求:使用一维数组存储二叉树 * 步骤: * 1、查看原始数据的个数(8个),从而制定二叉树层级(4层),得到满二叉树节点个数(15个) * 2、二叉树节点(15个)为一维数组,全设置为0 * 3、循环遍历原始数据,第一个值为树根 * 4、第二个值与父节点比较,如果大于树根,则往右子树比较,如果数组内的值小于或等于树根,则往左子树比较 * 5、【循环】步骤4,直到形成二叉树 * * 备注:左节点的坐标等于父节点的坐标*2,右节点的坐标等于父节点的坐标*2+1 */ import java.io.*; public class binaryTree{ public static void main(String args[]) throws IOException { int i,level; int data[]={6,3,5,9,7,8,4,2}; /*原始数组*/ int btree[]=new int[16]; for(i=0;i<16;i++) btree[i]=0; System.out.print("原始数组内容: \n"); for(i=0;i<8;i++) System.out.print("["+data[i]+"] "); System.out.println(); for(i=0;i<8;i++) /*把原始数组中的值逐一对比*/ { System.out.println("i==>"+i); for(level=1;btree[level]!=0;) /*比较树根及数组内的值*/ { System.out.println("levele==>"+level+" btree[level]==>"+btree[level]); if(data[i]>btree[level]) /*如果数组内的值大于树根,则往右子树比较*/ level=level*2+1; else /*如果数组内的值小于或等于树根,则往左子树比较*/ level=level*2; } /*如果子树节点的值不为0,则再与数组内的值比较一次*/ btree[level]=data[i]; /*把数组值放入二叉树*/ } System.out.print("二叉树内容:\n"); for (i=1;i<16;i++) System.out.print("["+btree[i]+"] "); System.out.print("\n"); } }
如果您喜欢我写的博文,读后觉得收获很大,不妨小额赞助我一下,让我有动力继续写出高质量的博文,感谢您的赞赏!!!
相关文章推荐
- 【Java】按位存储:使用int存储boolean数组
- 二叉树的构造与遍历—先根构造,一维数组存储按层构造,先根,中根,后根遍历输出
- Java实现登录、注册(使用数组存储数据)
- java-一维二维数组的定义、使用二维数组、遍历数组
- Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币
- 使用java实现链式存储的二叉树
- 输出N行的杨辉三角,用一维数组存储实现(java)
- Oracle存储过程传入类似java中list、数组类型的参数并使用
- 浅谈Java数组的一些使用方法及堆栈存储
- 二叉树的一维数组存储
- 将一棵二叉树的所有结点存储在一维数组中,虚结点用#表示,利用性质5
- 优先队列,由于优先队列的树形结构是完全二叉树,所以可以使用数组的形式去存储,我的上一个博客是用二叉树的形式去存储优先队列的
- 6.33③ 假定用两个一维数组L[1..n]和R[1..n]作为 有n个结点的二叉树的存储结构, L[i]和R[i]分别指 示结点i的左孩子和右孩子,0表示空。试写一个算法 判别结点u是否为结点v的
- 使用java实现顺序存储的二叉树
- java一维数组、多维数组底层存储
- 使用Java实现在SQLserver中实现图片的存储
- SQLServer-存储过程中使用字符串和分隔符实现传递数组参数(转)
- JAVA实现二叉树(二叉树的存储、二叉树的遍历)
- 如何在Oracle中使用Java存储过程 (详解)
- 详解Java的JDBC API的存储过程与SQL转义语法的使用