我有一个BST为;C++:计数在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);
大概将遍历结果存储在一个向量中,然后在向量中查找重复项,如果你不需要这样做到位? – taocp
@taocp我刚刚编辑了这个问题。谢谢你的提示! – Ali
您是否*不计算多重复数(即,如果您的树中有* 3 *'6'值,它是否被认为是“具有重复项的单个值”或者应该被视为两个“重复项”在现实中*三*,这是一个更难解决的问题)? – WhozCraig