BST의 root 노드의 주소를 인수로 받아, BST 내에 저장된 숫자들 중 같은 숫자가
가장 많은 것은 어떤 숫자인지 반환하는 함수 findMode( )를 아래프로그램에서
구현하고 실행하시오.
예를 들어, BST 내에 저장된 숫자들이 1, 2, 3, 4, 2, 2 라면 2가 3번 나타나므로,
함수 findMode( )는 결과값으로 2를 반환하여야 한다.
BST내의 같은 숫자는 left subtree에 저장되며, 각 숫자들은 1개 이거나,
서로 다른 개수가 있다.
아래 프로그램에서 함수 findMode( )를 구현하고, 실행하시오.
findMode( )의 구현을 위해 추가 함수나 변수를 사용할 수 있지만,
기존 코드는 절대로 수정해서는 안된다.
점수를 얻을 목적으로 기존 코드를 훼손한 경우,
부정행위로 간주하여 중간고사를 0점 처리함.
#include <stdio.h>
#include <stdlib.h>
struct bst_node
{
int value;
struct bst_node* left;
struct bst_node* right;
};
struct bst_node* root = 0;
void doMistery(int _v)
{
struct bst_node* cur = 0;
struct bst_node* temp = root;
cur = (struct bst_node*)malloc(sizeof(struct bst_node));
cur->left = cur->right = 0;
cur->value = _v;
if (root == 0)
{
root = cur;
return;
}
while (1)
{
if (_v <= temp->value)
{
if (temp->left == 0)
{
temp->left = cur;
return;
}
temp = temp->left;
}
else
{
if (temp->right == 0)
{
temp->right = cur;
return;
}
temp = temp->right;
}
}
}
int findMode(struct bst_node* _root)
{
/* 이 곳을 완성하시오 */
/* 새로운 함수를 만드는 것은 허용하지만,
기존 코드를 수정하면 0점 처리함. */
}
int main(void)
{
int v;
while (1)
{
scanf("%d", &v);
if (v == -999)
{
break;
}
doMistery(v);
}
printf("%d", findMode(root));
return 0;
}