2015-11-30 51 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