BST.can没有发生插入操作的原因?-1是数组中的null元素。 链接列表不适用于此代码。
void insert(int *Tree,int element)
{
int temp=0;/* first subscript*/
if(Tree[temp]==-1){
Tree[temp]=element;
return;
}
while(1){
if((Tree[temp]>element))
if (Tree[2*temp+1]==-1){
Tree[2*temp+1]==element;
break;
}
else
temp=2*temp+1;
else if(Tree[2*temp+2]==-1){
Tree[2*temp+2]==element;
break;
}
else
temp=2*temp+2;
}
}
答案 0 :(得分:2)
修复缩进,添加大括号以及替换用于赋值的==
(应该是=
),您的代码可以正常工作。仍然想添加一张支票,以确保您不会超过tree
...
#include <stdio.h>
void insert(int *Tree,int element)
{
int temp=0;/* first subscript*/
if(Tree[temp]==-1){
Tree[temp]=element;
return;
}
while(1)
{
if((Tree[temp]>element))
{
if (Tree[2*temp+1]==-1)
{
Tree[2*temp+1]=element;
break;
}
else
{
temp=2*temp+1;
}
}
else
{
if(Tree[2*temp+2]==-1)
{
Tree[2*temp+2]=element;
break;
}
else
{
temp=2*temp+2;
}
}
}
}
int main(void) {
int tree[100];
int ii;
for(ii=0;ii<100;ii++) tree[ii]=-1;
insert(tree, 5);
insert(tree, 3);
insert(tree, 9);
insert(tree, 4);
for(ii=0; ii<10; ii++) printf("%d: %d\n", ii, tree[ii]);
}
这是否真的产生了你正在寻找的树是我无法猜测的。