【发布时间】:2016-04-16 11:21:06
【问题描述】:
我有一个家庭作业,大部分都完成了,但我卡在了一个点上。 我必须搜索一棵二叉树并找到一个关键字,如果关键字没有出现,我必须在树上找到按字典顺序排列的下一个字符串,女巫以我想要查找的关键字作为前缀,直到没有其他字符串满足以前的标准。
下面的代码是在我没有找到确切的单词后搜索的。
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 <---(not root)
traversal trees
如果我搜索:“tr”
我只得到遍历。
遍历原因是一片叶子后我不能向左或向右走,而且我也找不到出现树和树的方法。
我尝试了一些方法,但没有成功,所以现在我问你,除此之外,我什至不知道如何处理按字典顺序排列的 next 关键字,也不知道如何处理它!
任何帮助表示赞赏! :D
【问题讨论】:
-
traversal不是你想去的地方吗?它是单词(其中显示的三个)在“tr”之后的字典顺序,对吧? -
@MDims 那么你想做什么?你的代码做你想做的事,它按字典顺序搜索。如果字符串包含搜索词,您要打印字符串吗?
-
对不起,我对问题进行了更改。 " ... 按字典顺序,树女巫的下一个字符串以我要查找的关键字作为前缀,直到没有其他字符串满足前面的条件。"
-
那么根据例子应该是什么结果?
-
他们三个,树比这个大。根据示例,如果我搜索 tr,我必须返回这三个词,而不仅仅是第一个词。
标签: c algorithm binary-search-tree permutation lexicographic