【发布时间】:2017-08-20 03:24:47
【问题描述】:
这是基于该节点的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;
有什么办法可以消除这个警告吗?
【问题讨论】:
-
警告非常明确。如果
parent->id != id,函数返回什么?函数必须总是返回一些东西,如果你声明它们这样做的话。 -
谢谢,您的回答对我帮助很大。我发现如果我将
if(parent->left != NULL) searchNode(parent->left, id);替换为return searchNode(parent->left, id);,那么程序将正常运行而不会发出任何警告。下一行也是如此:if(parent->right != NULL) searchNode(parent->right, id);。 -
@ISimion 如果你有一个左节点和一个右节点,但结果是在右节点中找到呢?您将从左侧返回结果,而不是查看右侧。