-1

Binary Search Tree で値を検索するこのコードは、完全には機能していません。

構造体ノードは、メンバーとして int データと構造体 *lc,*rc を持ちます。

これはタイプstruct *rnode のグローバル変数です。

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 の要素を検索するのに失敗します。プログラムは、見つかったノードへのポインターを返すことが期待されます。

4

1 に答える 1

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
}
于 2013-09-14T14:53:13.000 に答える