BST で n 番目に小さい要素を見つけるアルゴリズムを作成しましたが、n 番目に小さい要素ではなくルート ノードを返します。したがって、7 4 3 13 21 15 の順序でノードを入力すると、find(root, 0) を呼び出した後のこのアルゴリズムは、3 ではなく 7 の値を持つ Node を返し、find(root, 1) を呼び出すと、4 ではなく 13 を返します。考え?
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) {}
};