c语言,数组建立二叉树,数组越界的问题

论坛 期权论坛 期权     
求真相真理   2018-4-26 14:06   4813   2
下面的程序,是用数组建立一个二叉树,但是引发了异常。
引发了异常: 写入访问权限冲突。
btree 是 0x1A50802。上网查了一下 说是数组越界了,但是我不知道是哪个数组越界了,请大神帮我调试,修改一下。下面附上代码。

#define _CRT_SECURE_NO_WARNINGS...下面的程序,是用数组建立一个二叉树,但是引发了异常。
引发了异常: 写入访问权限冲突。
btree 是 0x1A50802。上网查了一下 说是数组越界了,但是我不知道是哪个数组越界了,请大神帮我调试,修改一下。下面附上代码。

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include

void create_(int *btree, int *data, int len)
{
int i;
int level;

btree[1] = data[0];
for (i = 1; i < len; i++)
{
  level = 1;
  while (btree[level] != 0)
  {
   if (data > btree[level])
   {
    level = level * 2 + 1;
   }
   else
   {
    level = level * 2;
   }
  }
  btree[level] = data;
}
}
void print_btree(int *tree, int len)
{
int i;
for (i = 0; i < len; i++)
{
  if (tree != 0)
  {
   printf("%d ", tree);
  }
}
}

void main()
{
int btree[42];
int data[20] = {20,19,18,17,16,15,14,13,12,11,21,22,23,24,25,26,27,28,29,30};
//create a bree

int i;
for ( i= 0; i < 42; i++) btree = 0;

create_(btree, data, 20);
print_btree(btree, 42);

}展开

分享到 :
0 人收藏

2 个回复

倒序浏览
2#
丿艾瑞灬莉娅  3级会员 | 2018-4-30 01:48:36 发帖IP地址来自
看你的代码逻辑是要用数组建立一颗二叉查找树(左结点值父节点)
如果你的data[]值是顺序递减的,那么就会一直插入到左节点去,level的值从1、2、4、8、16、32、64......很快就会超过你的数组上限
3#
GTA小鸡  1级新秀 | 2018-4-30 01:48:37 发帖IP地址来自
这是什么创树过程或算法?我没明白
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP