트라이는 문자열 집합을 표현하는 트리 형태의 자료구조입니다. 각 노드는 하나의 알파벳 문자를 가지며, 루트에서 임의의 노드까지의 경로를 따라가면 해당 경로에 해당하는 문자열을 찾을 수 있습니다.
C에서는 트라이를 다음과 같이 정의할 수 있습니다.
struct TrieNode {
struct TrieNode* children[26];
int is_end_of_word;
};
struct TrieNode* createNode() {
struct TrieNode* node = (struct TrieNode*)malloc(sizeof(struct TrieNode));
for (int i = 0; i < 26; ++i) {
node->children[i] = NULL;
}
node->is_end_of_word = 0;
return node;
}
Python에서는 다음과 같이 트라이를 정의할 수 있습니다.
class TrieNode:
def __init__(self):
self.children = {}
self.is_end_of_word = False
C와 Python 모두 트라이를 구현할 수 있으나, 각 언어의 특성에 따라 특정 상황에서 더 유리한 측면이 있을 수 있습니다. C는 더 높은 성능을 필요로 하는 경우에, Python은 빠른 개발과 유지보수가 중요한 경우에 사용될 수 있습니다.