基本上,我创建了一个二叉树。我的二叉树将包含可以改变大小写的字符串,即Hello,hello,HELLO。
我需要实现一个函数,以便当遍历树,即搜索名称时,通过用户输入,无论用户输入什么情况,它总是会找到名称。即搜索Hello,仍然会找到并显示HELLO,反之亦然。
我的树使用递归结构,所以我无法想到在我的代码中实现toupper函数或其他方法的简单方法。
问题是,我需要能够找到托马斯,即使托马斯被输入了例如。 但是我不知道在哪里可以实现这样的函数,因为目标不是操纵树中的输入。
任何建议都很棒:)
更新:
else if ((comparison = strcmp(search, root->name)) == 0) {
return root;
} else if ((comparison = strcmp(search, root->name)) < 0) {
return SearchTree(root->left, search);
} else if ((comparison = strcmp(search, root->name)) > 0)
return SearchTree(root->right, search); `
这些是我的比较和递归调用,Search是包含用户输入的字符串,但是将toupper添加到任何递归调用只会返回错误。
托马斯。
答案 0 :(得分:2)
我建议您在搜索树时进行与案例无关的比较(stricmp
)。
因为stricmp
比strcmp
慢一点,如果树非常大,那么你应该考虑始终以小写形式存储键并对搜索值执行相同操作以便您可以使用strcmp
无处不在。
答案 1 :(得分:0)
在每个点你都需要进行角色比较(为了判断某些东西是否匹配),使用ctype.h
中的函数将查询和你正在考虑的字符转换为大写或小写。或者。它是递归的这一事实无关紧要 - 您只需要对当时比较的单个字符进行一致,而不是整个字符串。
(编辑:我误解了原来的问题,这个问题已被澄清并得到充分回答)
另外,使用二叉树进行字符串查找很奇怪。