2014-03-05 148 views
0
void binarySearch(int); 
    void createB(void); 
    int A[]={45,16,22,51,18,72,33,64,40}; 
    int i,j,x,y; 

    int main(){ 

      scanf("%d",&y); 
createB(); 
      binarySearch(y); 
    return 0; 
    } 

createB(){ 


    B[0]=A[0]; 
    for(i=1; i<10; i++) 
    { 
     x=A[i]; 
     j=0; 
     while(B[j]!=0) 
     { 
      if (x<B[j]) 
      { 
       j=2*j+1; 
      } 
      else 
      { 
       j=2*j+2; 
      } 
     } 
     B[j]=x; 
    } 
}} 

    void binarySearch(int y){ 
    i=0; 
    while((B[i]!=0)&&(y!=B[i])){ 
     if(y<B[i]){ 
      i=2i+1; 
     } 
     else{ 
      i=2i+2; 
     } 

    } 

我的代碼是。它會正確創建二叉搜索樹。c中的二叉搜索樹搜索rerror

45 16 51 0 22 0 72 etc 

然後,例如,如果我搜索45或16它找到正確。但是對於66,或者其他東西,它會無限循環(我用很多printf測試過)。第一次後,如果我變成2(i * 2 + 2)爲66,但然後我保持2和無限循環。

回答

0
i=2i+1; // missing the '*' multiply 
+0

噢,謝謝:D什麼是一個小錯誤,但我不能看到小時 – user3340480

+1

甚至不應該編譯。 –