我有一个家庭作业,完成了大部分工作,但我被困在一个点上。我必须搜索一棵二叉树并找到一个关键字,如果关键字没有出现,我必须在树上找到按字典顺序排列的下一个字符串,女巫以我想要查找的关键字作为前缀,直到没有其他字符串满足以前的标准。
下面的代码用于在我没有找到确切的单词后进行搜索。
int successor(TreeNode *v,char* x){
int lenght = strlen(x);
printf("%d\n", lenght);
if (v != NULL) {
if (strncmp(x , v->key, lenght) == 0)
{
// found
printf("%s, %d\n", v->key, v->appears);
}
else if (strncmp(x , v->key, lenght) < 0)
return successor(v->left, x);
else if (strncmp( x , v->key, lenght) > 0)
return successor(v->right, x);
else
printf("Query string not found.\n");
}
}
else return 0; }
例子
如果我有话说:tree traversal trees
tree <---(not root)
traversal trees
如果我搜索:“tr”
我只得到遍历。
遍历原因是一片叶子后,我不能向左或向右走,而且我也找不到出现树和树的方法。
我已经尝试了一些事情,但没有成功,所以现在我问你,除此之外,我什至不知道如何处理字典顺序的 next 关键字或我必须用它做什么!
任何帮助表示赞赏!:D