C 使用指针在二叉树中进行深度优先搜索
我正在用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
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);}
}