BSTでn番目に小さい要素を見つけるアルゴリズムを書いたが、n番目に小さいものの代わりにルートノードを返す。したがって、ノードを7 4 3 13 21 15の順番で入力すると、find(root、0)の呼び出し後のこのアルゴリズムは、3ではなく7のNodeを返し、find(root、1)の呼び出しでは4の代わりに13を返します。思考?バイナリ検索ツリーでn番目に小さい要素を見つける
Binode* Tree::find(Binode* bn, int n) const
{
if(bn != NULL)
{
find(bn->l, n);
if(n-- == 0)
return bn;
find(bn->r, n);
}
else
return NULL;
}
とBinode
class Binode
{
public:
int n;
Binode* l, *r;
Binode(int x) : n(x), l(NULL), r(NULL) {}
};
これまでに行ったデバッグは何ですか? –
あなたのコードは意味的にもアルゴリズム的にも意味をなさない。 – Corbin
find(bn-> l、n)とfind(bn-> r、n)の結果は使用しません。 – user396672