在BST(c)中搜索字符串

在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) <

我已经建立了一个二叉搜索树,每个节点都包含一个人的名字。我想在main中创建一个循环,允许我搜索输入的名称是否在BST中。
我写了这个函数:

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");
}