当前位置: 首页 > 知识库问答 >
问题:

二元树状搜寻

方绪
2023-03-14

我试图在二叉树中查找节点,但是函数没有返回任何东西,NULL!对了,在printf,在

if ((cond = strcmp(head->word, word_to_search)) == 0)

结果是对的,它只是不返回值,可能我在递归方面弄错了,我不知道。顺便说一句,如果我将最后一个返回 NULL 包装在其他内容中,它确实会返回有效的指针,但它会导致警告......

struct count_tree *
binaryt_search(struct count_tree *head, char *word_to_search)
{
    int cond = 0;
    if (head != NULL) {
        if ((cond = strcmp(head->word, word_to_search)) == 0) {
            printf("Found %s %d\n", head->word, head->count);
            return head;
        }
        else if (cond < 0) {
            binaryt_search(head->left, word_to_search);
        }
        else {
            binaryt_search(head->right, word_to_search);
        }
    }
    return NULL;
}

共有1个答案

文建业
2023-03-14

您需要返回binaryt_search()

binaryt_search(head->left, word_to_search);

成为

return binaryt_search(head->left, word_to_search);

binaryt_search(head->right, word_to_search);

成为

return binaryt_search(head->right, word_to_search);

 类似资料:
  • 这种方法在确定树是否为BST时是错误的吗?节点的左子树仅包含键小于节点键的节点。节点的右子树仅包含键大于节点键的节点。左右子树也必须是二叉搜索树。我的代码是:

  • 主要内容:src/runoob/binary/BinarySearch.java 文件代码:一、概念及其介绍 二分搜索树(英语:Binary Search Tree),也称为 二叉查找树 、二叉搜索树 、有序二叉树或排序二叉树。满足以下几个条件: 若它的左子树不为空,左子树上所有节点的值都小于它的根节点。 若它的右子树不为空,右子树上所有的节点的值都大于它的根节点。 它的左、右子树也都是二分搜索树。 如下图所示: 二、适用说明 二分搜索树有着高效的插入、删除、查询操作。 平均时间的时间复

  • 本文向大家介绍二元搜寻,包括了二元搜寻的使用技巧和注意事项,需要的朋友参考一下 对列表进行排序后,我们可以使用二进制搜索技术在列表中查找项目。在此过程中,整个列表分为两个子列表。如果在中间位置找到该项目,它将返回该位置,否则将跳转到左或右子列表,然后再次执行相同的过程,直到找到该项目或超出范围为止。 二进制搜索技术的复杂性 时间复杂度:最佳情况下为O(1)。O(log2 n)用于一般情况或最坏情况

  • 我在做作业,实现自己的二叉查找树。问题是,我们有自己的节点实现,它的父节点是不可直接访问的。 我一直在寻找答案,但我不想完全照搬解决方案,尽管如此,我似乎仍然没有得到正确的答案。我错过了一些元素没有被删除的情况。 你能帮帮我吗?我做错了什么? 这是删除方法: 节点使用通用接口 只有比较的方法。它看起来像这样 我在remove中使用了另一种方法,它设置节点的父节点的子节点,具体取决于它的左子节点还是

  • 树的特征和定义 树(Tree)是元素的集合。我们先以比较直观的方式介绍树。下面的数据结构是一个树: 树有多个节点(node),用以储存元素。某些节点之间存在一定的关系,用连线表示,连线称为边(edge)。边的上端节点称为父节点,下端称为子节点。树像是一个不断分叉的树根。 每个节点可以有多个子节点(children),而该节点是相应子节点的父节点(parent)。比如说,3,5是6的子节点,6是3,

  • 我很难按我教授想要的格式打印出一个二叉搜索树。 他的格式是这样的: 我的代码: