我正在尝试使用递归函数使用二叉树(不,它不是二叉搜索树,只是二叉树)来制作搜索方法。如果数据在二叉树上,我希望它返回节点,如果不是,我希望它返回一个NULL
值。我已经制作了搜索功能,并且它完美地完成了它的工作。但问题是,该函数似乎不会返回节点。
这是struct
二叉树的:
struct data
{
int number;
struct data *left, *right;
}*root = NULL;
这是我正在谈论的搜索功能:
data* search(struct data *node, int key)
{
if(node == NULL)
return NULL;
else
{
printf("\n%d %d -", node->number, key);
if(node->number== key)
return node;
search(node->left, key);
search(node->right, key);
}
}
当我像这样调用搜索函数时:search(root, 6);
它表示它正在返回一个NULL
值,尽管我已经将一个6
数字推入二叉树(并且搜索函数return node;
也停在该行,所以我假设该函数是返回一个NULL
。)
我在这里看到了二叉树的教程 ,使用并更改了一些代码,但它仍然是一样的。我在这里拼命寻求帮助:(