因此,这是基于该节点的id
在树中简单搜索节点的代码:
NodeT *searchNode(NodeT *parent, int id)
{
if(parent == NULL) printf("\nThere is no tree.");
if(parent->id == id)
return parent;
else
{
if(parent->left != NULL) searchNode(parent->left, id);
if(parent->right != NULL) searchNode(parent->right, id);
}
}
我也得到了这个:警告:控制到达无效功能的结束[-Wreturn-type] |
节点定义如下:
typedef struct node_type
{
char id;
struct node_type *left, *right;
} NodeT;
有什么方法可以摆脱那个警告吗?
答案 0 :(得分:0)
您的功能仅在某些情况下返回某些内容。警告告诉您在任何情况下都需要退货。对于代码cos,这是一个非常重要的警告,因为它还突出了几个错误。
if(parent == NULL) printf("\nThere is no tree.");
if(parent->id == id)
如果parent
为NULL
会怎样?它打印出错误消息然后继续到下一行并将崩溃。如果它是真的,你希望第一个if
也有一个return语句,这样代码就不会继续,或者将其余的函数代码放入else块。
接下来,如果您的树中有多个节点会发生什么?你遍历树,但忽略了结果!如果你搜索一个不存在的节点,你也不会为此返回任何内容。
因此,如果代码无法找到结果或者通过递归调用自身返回传递给它的结果,则应将代码更改为return NULL
。