我有一个BST;
8
/ \
4 12
\
6
/
6
我有以下代码来计算重复计数,这里应该是 1(6 有重复);
struct Node
{
int data;
Node *left, *right;
};
void inorder(Node *root, Node *previous, int count)
{
if(root != NULL)
{
if(root != previous && root->data == previous->data)
count++;
previous = root;
inorder(root->left, previous, count);
cout<<root->data<<" ";
inorder(root->right, previous, count);
}
}
我必须使用恒定的额外空间来做到这一点。我知道它离我们很近,但我的想法是跟踪前一个节点并检查重复项,最后返回计数。但是在按顺序执行 BST 遍历时,我无法返回整数值。除此之外,还有更好的方法来计算 BST 中的重复项。我发起;
inorder(a, a, 0);