c中的二进制搜索树插入

时间:2014-03-10 23:14:20

标签: c

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

1 个答案:

答案 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]);
}

这是否真的产生了你正在寻找的树是我无法猜测的。