我对这个逻辑有问题。如何搜索整个树(因为我不能依赖任何订单搜索)并且只返回一个匹配值(如果存在)?如果我返回递归调用,一旦它到达第一片叶子并且没有找到匹配项,它会不会失败?
使用下面的函数时,会进行调用,直到找到匹配项或到达树的末尾,并且无论匹配项如何,都会返回最左侧的节点。
我的递归函数,按顺序遍历:
tnode *find(tnode *ptr, const char *str)
{
if (ptr == NULL) return ;
if(strcmp (str,ptr->str) == 0)
return ptr;
else
{
//search left subtree
if (ptr->left != NULL)
find(ptr->left, str) ;
// search right subtree
if (ptr->right != NULL)
find(ptr->right, str) ;
}
return;
}