문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조
트리구조로 간선은 이전 정점으로 새롭게 추가되는 문자 정보를 가지고 있다.
정점은 이전 정점으로부터 더해진 문자열 정보를 가지고 있다.
이런식으로 미리 정의한 문자열로 자동완성을 구현할 수 있다.
def Node:
def __init__(self, value = ""):
self.value = value
self.children = dict()
def Trie(self):
def __init__(self, string):
self.root = Node()
def insert(self, string):
cur = self.root
for char in string:
if char not in cur.children:
cur.children[char] = Node(cur.value + char)
cur = cur.children[char]
def has(self, string):
cur = self.root
for char in string:
if char not in cur.children:
return False
cur = cur.children[char]
return True