트라이
트라이 구축하기
트라이 노드 설계
class Node
{
boolean isfinish = false;
TrieNode[] chlid = new TrieNode[10];
}
void insert 함수
static void insertTireNode(String word) {
TrieNode current =root;
for (int i = 0; i < word.length(); i++) {
char a = word.charAt(i);
int index = a - '0';
if (current.chlid[index] == null) {
current.chlid[index] = new TrieNode();
}
current = current.chlid[index];
}
current.isWord = true;
}
boolean serach 함수
public boolean search(String target) {
trienode current = root;
for(int i = 0 ; i < target.length(); i++) {
char a = target.charAt(i);
int index = a-'0';
if(current.child[index]==null) {
return false;
}
//출발 가능 조건 : root가 해당 child를 가지고 있으면 포인터는 해당 child의 주소값 가르킴
current = current.child[index];
if(i < target.length()-1 && current.isfinish) {
//마지막 글자가 아닌데, isfinish일경우 : false 반환
return false;
}
}
return (current!=null)&¤t.isfinish;
// 마지막 글자이고, isfinsh일 경우 마지막 리프노드라는 것을 의미
// 그렇다면 true 출력
}