2015-11-30 103 views
-3

我不能在我的代碼找出這個錯誤:遇到問題與二叉樹

error: invalid operands to binary < (have ‘Flight’ and ‘NodeT’) 
if (flight < *p) 
      ^

我試圖做一個二叉樹,併爲它創建一個搜索:

NodeT *insertT(NodeT *p, Flight flight) 
{ 

if (p == NULL) 
{ 
    p = malloc (sizeof (NodeT)) ; 

    (p) -> pLeft = NULL ; 
    (p) -> flight; 
    (p) -> pRight = NULL ; 
} 
else/* search the node to which new node will be attached */ 

{ 
    /* if new data is less, traverse to left */ 
if (flight < *p) 
     insert (&((p) -> pLeft), flight) ; 

else /* else traverse to right */ 

     insert (&((p) -> pRight), flight) ; 
} 



} 

我已經嘗試改變並調整節點。

+2

'flight'是'Flight'和'* p'是'NodeT' 。他們是不同的數據類型。 '<'應該如何比較不同的數據類型?這就像試圖比較'3.14 <「duck」'。 – Cornstalks

+1

NodeT結構是什麼樣的?順便說一句,'(p) - > flight'行不做任何事。而且,在創建新節點之後,結果會被丟棄而不會產生任何影響。 – interjay

+0

typedef struct NodeT { Flight flight; //包含航班信息 struct NodeT * pLeft; //指向左節點 struct NodeT * pRight; //指向正確的節點 } NodeT; – thewhiteknifer

回答

0

您試圖比較兩種不同類型 - Flight flightNodeT *p

基於您的代碼,這樣看來,你需要改變

if (flight < *p) 

if (flight < p->flight) 
+0

錯誤:一元'*'(具有'航班')的無效類型參數 如果(航班< *(p->航班)) ^ – thewhiteknifer

+0

您不需要解除引用,然後編輯。 – tonysdg