我正在开发一个函数,该函数在 C 中的二叉搜索树中搜索随函数传入的名称。但是,我坚持如何格式化我的循环,以便当遍历到达没有子节点的最左侧节点时,recusion 不会简单地结束。遍历必须是预定的(访问我自己,然后是我的左孩子,然后是我的右孩子)。
我的查找功能如下:
tnode *bst_find_by_name(tnode *ptr, const char *nom){
if(ptr != NULL){
if(strcmp(ptr->name, nom) == 0){
return ptr;
}
if(ptr->left != NULL){
return bst_find_by_name(ptr->left, nom);
}
if(ptr->right != NULL){
return bst_find_by_name(ptr->right, nom);
}
}
return NULL;
}
如您所见,目前这只是在到达与传递给函数的字符串不匹配的最左侧节点时返回 NULL。如果它在树中找不到匹配项,我必须让它返回 NULL,但同时我不希望它在有机会搜索树中的每个节点之前过早返回 NULL。有任何想法吗?