我已經編寫了一個算法來查找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