私は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);