在二进制搜索树中搜索

时间:2013-09-14 14:43:16

标签: c pointers recursion binary-search-tree

此二进制搜索树中的值搜索代码无法正常运行。

struct节点有int数据和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);}
}

此代码用于搜索编译但在运行时失败以搜索正常运行的BST的任何元素。程序应返回指向找到的节点的指针。

1 个答案:

答案 0 :(得分:2)

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
}