我不能在我的代碼找出這個錯誤:遇到問題與二叉樹
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) ;
}
}
我已經嘗試改變並調整節點。
'flight'是'Flight'和'* p'是'NodeT' 。他們是不同的數據類型。 '<'應該如何比較不同的數據類型?這就像試圖比較'3.14 <「duck」'。 – Cornstalks
NodeT結構是什麼樣的?順便說一句,'(p) - > flight'行不做任何事。而且,在創建新節點之後,結果會被丟棄而不會產生任何影響。 – interjay
typedef struct NodeT { Flight flight; //包含航班信息 struct NodeT * pLeft; //指向左節點 struct NodeT * pRight; //指向正確的節點 } NodeT; – thewhiteknifer