我已经编写了一个算法来查找BST中的第n个最小元素,但它返回根节点而不是第n个最小元素。因此,如果您按顺序输入节点7 4 3 13 21 15,则在调用find(root,0)之后,该算法将返回值为7而不是3的节点,并且对于调用find(root,1),将返回13而不是4。想法?查找二进制搜索树中的第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) {}
};
你到目前为止做了哪些调试? – 2012-04-28 11:14:57
您的代码在语义或算法上没有多大意义。 – Corbin 2012-04-28 11:15:28
你不使用find(bn-> l,n)和find(bn-> r,n)的结果; – user396672 2012-04-28 11:16:18