c语言 用一维数组存储二叉树,使用一维数组存储二叉树

/***

* 需求:使用一维数组存储二叉树

* 步骤:

* 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");

}

}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值