c语言中的二叉搜索树插入

c语言中的二叉搜索树插入,c,C,BST未执行插入操作。是否可能导致?-1是数组中的空元素。 链接列表不适用于此代码 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))

BST未执行插入操作。是否可能导致?-1是数组中的空元素。 链接列表不适用于此代码

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;
    }
}

修复缩进,添加大括号,并替换用于赋值的
=
(应该是
=
),代码工作正常。仍然希望添加一个检查以确保您没有超过
树的大小

#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]);
}
#包括
空插入(int*树,int元素)
{
int temp=0;/*第一个下标*/
if(树[temp]=-1){
树[temp]=元素;
返回;
}
而(1)
{
if((树[temp]>元素))
{
if(树[2*temp+1]=-1)
{
树[2*temp+1]=元素;
打破
}
其他的
{
温度=2*温度+1;
}
}
其他的
{
if(树[2*temp+2]=-1)
{
树[2*temp+2]=元素;
打破
}
其他的
{
温度=2*温度+2;
}
}
}
}
内部主(空){
int树[100];
int ii;

对于(ii=0;ii
Tree[2*temp+1]==element
来说,赋值不会有多大作用。同样,对于
Tree[2*temp+2]==元素
。哦,复制粘贴!你是一个残忍无情的丫头。你分配了足够的空间,每个元素都初始化为
-1
?如果
temp
超过树的大小会发生什么?…你注意到任何编译器警告吗?哇@WhozCraig-你对我们有诗意吗?仍然-眼睛很好。接近“打字错误”“?@Floris确实投了这样的票。天知道算法是否正确。甚至懒得检查=P@user3403833我建议为每个
if
else
添加大括号,即使它们只是一个语句长。现在你有一个长
if-else
包装在另一个
if
中,这要求双倍+1你也可以猜=(事实上,这就是你所能做的一切了=}@Floris成功的解决方案非常感谢你muchhh@YavuzGiran很高兴提供帮助。请牢记我关于始终使用
{}
的评论…并始终打开编译器警告-它应该会对您的
==
发出尖叫(我的gcc编译器会这样做)。