C 使用指针在二叉树中进行深度优先搜索

C 使用指针在二叉树中进行深度优先搜索,c,pointers,C,Pointers,我正在用C语言学习指针算法 作为练习,我想编写一个二叉树 到目前为止,我得到了结构本身 typedef struct bintree { struct bintree *left; struct bintree *right; int value; } bintree ; 树的构造 bintree *new_bintree (int value) { bintree *node = malloc(sizeof(bintree)); knoten -> le

我正在用C语言学习指针算法 作为练习,我想编写一个二叉树

到目前为止,我得到了结构本身

typedef struct bintree
{   struct bintree *left;
    struct bintree *right;
    int value;
} bintree ;
树的构造

bintree *new_bintree (int value)
{   bintree *node = malloc(sizeof(bintree));
    knoten -> left = NULL;
    knoten -> right = NULL;
    knoten -> value = value;
    return (node);
}
添加节点函数

int bintree_add(bintree *tree, int value)
{   if (value == tree->value)
    {return(-1);}
    if ((value <= tree->value)&&(tree->left!=NULL)) /*Left node check and insert*/
        { return(bintree_add(tree->left, value));}
    if ((value <= tree->value)&&(tree->left==NULL))
    {bintree *knoten = malloc(sizeof(bintree));
        knoten -> left = NULL;
        knoten -> right = NULL;
        knoten -> value = value;
        tree -> left = node;
        return(0);
        }

    if ((value >= tree->value)&&(tree->right!=NULL)) /*right node check and insert*/
        { return (bintree_add(tree->right, value));}
    if ((value >=tree->value)&&(tree->right == NULL))
    {bintree *knoten = malloc(sizeof(bintree));
        knoten -> right = NULL;
        knoten -> left = NULL;
        knoten -> value = value;
        tree -> right = node;
        return (0);
    }
}
现在我想实现DepthFirstSearch和呼吸优先搜索

这是我到目前为止的DFS代码

bool bintree_dsearch(bintree *tree, int value)
{   
    if (value == tree->value)
    {return true;}
    if (tree->value == NULL)
    {return false;}
    if (tree->left != NULL)
    {return bintree_dsearch(tree->left, value);}
        else return bintree_dsearch(tree->right, value);

}
感谢您的帮助:)


提前谢谢

好的,修好了,现在运行良好

这是密码

bool bintree_dsearch(bintree *tree, int value)
{
    if (value == tree->value)
    {return true;}
    if (tree->value == NULL)
    {return false;}
    if (tree->left != NULL)
    {return bintree_dsearch(tree->left, value);}
    if (tree->right != NULL)
    {return bintree_dsearch(tree->right, value);}
}

请展示一些您已经使用过的代码以及您遇到问题的地方。internet上有多种资源可供您使用,例如,包含两种遍历的伪代码,它可以根据您的需要进行调整和实现。为我的DFS添加了代码。您更改了什么来修复它?第一篇文章中的else语句完全错误,也没有检查是否有正确的节点,然后对值执行递归搜索
bool bintree_dsearch(bintree *tree, int value)
{
    if (value == tree->value)
    {return true;}
    if (tree->value == NULL)
    {return false;}
    if (tree->left != NULL)
    {return bintree_dsearch(tree->left, value);}
    if (tree->right != NULL)
    {return bintree_dsearch(tree->right, value);}
}