Я написал алгоритм поиска n-го наименьшего элемента в BST, но он возвращает корневой узел вместо n-го наименьшего. Поэтому, если вы вводите узлы в порядке 7 4 3 13 21 15, этот алгоритм после вызова find (root, 0) возвращает узел со значением 7 вместо 3, а для вызова find (root, 1) он возвращает 13 вместо 4. Любой мысли?Найти nth наименьший элемент в двоичном дереве поиска
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
вы не используете результаты поиска (bn-> l, n) и находите (bn-> r, n); – user396672