我已经编写了一种算法,用于在 BST 中查找第 n 个最小元素,但它返回根节点而不是第 n 个最小元素。因此,如果您按 7 4 3 13 21 15 的顺序输入节点,则调用 find(root, 0) 后该算法返回值为 7 而不是 3 的节点,而调用 find(root, 1) 则返回 13 而不是 4。想法?
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) {}
};