c - 二叉树递归搜索c代码[不是二叉搜索树]

标签 c search recursion binary-tree

我的代码的问题是,当搜索左子值时,由于递归级别,它返回并检查右子值。返回不正确。我找不到克服它的方法。

node * search(node *ptr,int key)
{
    if(ptr->data==key)
        return ptr;
    else
    {
        if(ptr->lchild!='\0')
            search(ptr->lchild,key);
        else
            return '\0';
        if(ptr->rchild!='\0')
            search(ptr->rchild,key);
        else
            return '\0';
    }
}

最佳答案

大概是这样

node * search(node *ptr,int key)
{
    node *pwk;
    if(ptr == NULL) return NULL;
    if(ptr->data==key)
        return ptr;
    if(NULL!=(pwk=search(ptr->lchild,key)))
        return pwk;
    if(NULL!=(pwk=search(ptr->rchild,key)))// or return search(ptr->rchild,key);
        return pwk;
    return NULL;
}

关于c - 二叉树递归搜索c代码[不是二叉搜索树],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128999/

相关文章:

c - 使用 C 语言连接 Postgres 数据库时出错 - 使用 libpq-fe.h

c - 如何在c中给蒙版上色

c - 尝试将指针移交给函数时如何修复 'expected * but argument is of type **' 错误

Python 3.6.1 |正则表达式搜索具有特殊字符的文件

php - Python 从搜索结果中抓取链接

arrays - 批量递归文件夹并填充数组

在 C 中裁剪 .ppm 文件

php - PDO - 按价格升序或降序排列

python - 使用 os.walk 避免无限递归

python - Python 中的 JSON、列表和递归