У меня есть BST as;
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);
6
в дереве, предполагается ли, что оно считается одним значением с дубликатами или должно считаться двумя? дубликаты (а на самом деле три, что гораздо сложнее решить)? - person WhozCraig   schedule 24.07.2013