在BST(c)中搜索字符串
我已经建立了一个二叉搜索树,每个节点都包含一个人的名字。我想在main中创建一个循环,允许我搜索输入的名称是否在BST中。在BST(c)中搜索字符串,c,tree,C,Tree,我已经建立了一个二叉搜索树,每个节点都包含一个人的名字。我想在main中创建一个循环,允许我搜索输入的名称是否在BST中。 我写了这个函数: int find(Node* root, char* search) { if (root != NULL) { if(strcmp((root->name), search) == 0) return 1; if (strcmp(root->name, search) <
我写了这个函数:
int find(Node* root, char* search) {
if (root != NULL) {
if(strcmp((root->name), search) == 0)
return 1;
if (strcmp(root->name, search) < 0)
return find(root->left, search);
else
return find(root->right, search);
}
else
return 0;
}
出于某种原因,它只对我的BST中的第一个名字(根)起作用(找到指纹)。任何帮助都将不胜感激 如果
strcmp(root->name,search)<0
,则表示root->name比search“小”,您应该向右看,而不是向左看
我想你已经找到了你的搜索方向!在向左递归的地方,应该向右递归,反之亦然
char choice[30];
while(1){
printf("Enter a word to search: ");
scanf("%s", choice);
int result = find(root, choice);
if(result == 1){
printf("Found.");
}
else{
printf("Not found.");
}
printf("\n");
}