2013-10-07 82 views
0

這是在C,這不是給我的解決方案父二叉樹節點的搜索給出關鍵

struct node* serch(struct node *ptr,int x) 

{ 

    if(ptr->data==x) 
    {  
    printf(" root of tree itself "); 
    } 
    else 
    {  
    struct node *ptr1,*ptr2; 
    ptr1=ptr->left; 
    ptr2=ptr->right; 

    while((ptr1->data!=x)&&(ptr2->data!=x)) 
    { 
     if(ptr->data>x) 
     { 
      ptr=ptr1; 
      ptr1=ptr->left; 
      ptr2=ptr->right; 
     } 

     else if(ptr->data<x) 
     { 
      ptr=ptr2; 
      ptr1=ptr->left; 
      ptr2=ptr->right; 
     } 
    } 
    return ptr; 
    } 
} 

代碼工作正常節點的具有功能的兩個孩子(尤其是工作正常高達樹的水平是平衡的),但之後它不起作用,並給出錯誤

parentnode.exe已停止工作,Windows正在檢查解決方案。

+0

@馬克Lakata,甚至固定第一錯誤後,我沒有通過獲取和如果你給的代碼片段來解決這將是非常慷慨的你第二個錯誤,因爲我無法自己修復它。 – user2855913

+0

問問你自己,如果一個節點沒有左腳會發生什麼?還是右腳?或兩者都不?對不起,我再也忍不住了。問你的老師。 –

回答

0

你有幾個錯誤

  1. 你是不是對的情況下ptr->data==x返回的東西。你的c編譯器應該給出一個警告,說明並不是所有的路徑都返回一個值。

  2. 你不檢查空