C 二叉搜索树中的搜索

C 二叉搜索树中的搜索,c,pointers,recursion,binary-search-tree,C,Pointers,Recursion,Binary Search Tree,在二进制搜索树中搜索值的代码不能完全工作 struct节点的成员为int data和struct*lc、*rc 此处*r是struct node类型的全局变量 struct node * searchbt(struct node*bn,int x) { if(bn==NULL) {printf("Element not found.\n");} if(bn->data==x) {printf("Element found.\n"); r=bn; return r;

在二进制搜索树中搜索值的代码不能完全工作

struct节点的成员为int data和struct*lc、*rc

此处
*r
是struct node类型的全局变量

struct node * searchbt(struct node*bn,int x)

{   if(bn==NULL)

    {printf("Element not found.\n");}

    if(bn->data==x) {printf("Element found.\n"); r=bn; return r;}

    if(bn->data<x)  {searchbt((bn->lc),x);}

    else {searchbt((bn->rc),x);}
}
struct node*searchbt(struct node*bn,int x)
{if(bn==NULL)
{printf(“未找到元素。\n”);}
如果(bn->data==x){printf(“找到元素”。\n”);r=bn;返回r;}
如果(bn->datalc),x);}
else{searchbt((bn->rc),x);}
}
此用于搜索的代码已编译,但在运行时无法搜索正在运行的BST的任何元素。程序应返回指向找到的节点的指针。

struct node*searchbt(struct node*bn,int x)
struct node * searchbt(struct node*bn,int x)

{   if(bn==NULL)

    {printf("Element not found.\n"); return bn;} //return bn

    if(bn->data==x) {printf("Element found.\n"); return bn;} //Just return bn

    if(bn->data<x)  {return searchbt((bn->lc),x);} // <- Add return 

    else { return searchbt((bn->rc),x);} //<- Add return
}
{if(bn==NULL) {printf(“未找到元素。\n”);返回bn;}//返回bn 如果(bn->data==x){printf(“找到元素”。\n”);返回bn;}//只返回bn
如果(bn->datalc),x);}//rc,x);}//你的问题是什么?你试过什么?试着在给定的二元搜索树中搜索一个值。所以手动投票……虽然没有答案。是的。阅读社区规则。哪一部分给你带来麻烦?返回r错误吗?此外,bn是一个局部变量,当控制从块中传递出去时,它会被破坏。我在这里感到困惑。请回答。@RafedNole你怎么这么认为?我建议你读一本好的C语言书。检查一下。另外,如果我是对的,你已经有了答案。