C - 在二叉搜索树中搜索数字

标签 c search recursion binary-search-tree

我正在尝试在 BST 中搜索数字,但函数始终打印“YES”(找到数字)

这是我在main中的代码

    printf("Enter a number to search: ");
    scanf("%d", &num);
    if (search(root, num) != NULL) {
        printf("YES\n");
    }
    else {
        printf("NO\n");
    }

这是我的搜索功能

BST* search(BST* root, int value) {
    if( root == NULL) {
        return NULL;
    }
    else if(value < root->value) {
        root->left = search(root->left, value);
    }
    else if(value > root->value) {
        root->right = search(root->right, value);
    }
    return root;
}

最佳答案

我真的不明白,为什么要覆盖 root->leftroot->right。我认为您的 search() 函数应该如下所示:

BST *search(BST *root, int value)
{
    if (root == NULL)
        return NULL;
    if (value == root->value)
        return root;
    if (value < root->value)
        return search(root->left, value);
    if (value > root->value)
        return search(root->right, value);

    return NULL; /* not actually reached */
}

关于C - 在二叉搜索树中搜索数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22692580/

相关文章:

python - 模运算递归

JAVA:使用递归从头到尾加法

c - 固定大小的 float / double 以方便携带

c - 在调用exec *()系列函数时,argv的char *元素是否必须唯一?

json - 如何从 Elasticsearch 中的 "OR"查询中生成逻辑 "bool"?

在 COBOL 中搜索和搜索所有内容

java - 在 ArrayList Java 中搜索特定对象

c - GCC 预编译器宏 ## ,与另一个宏的标记连接

c - 未排序数组中元素的出现次数 O(n)

xml - 递归使用 XSD