我不能在我的代码找出这个错误:遇到问题与二叉树
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