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; }