그래서 저는 비교적 새로운 데이터 구조 인 Trie를 읽으려고했습니다. 그리고 내가 읽은 곳에서, trie의 모든 노드는 단어의 끝을 표시하는 정수 변수로 구성되며, 하위 레벨의 노드를 가리키는 26 개의 포인터로 구성됩니다 (작은 단어 만 포함한다고 가정 할 때). 문자).Trie의 트러블
이제 내가 직면 한 문제는 구현을 보거나 읽은 곳에서 노드에 문자를 표시하는 것입니다. 이 경우처럼 :
http://community.topcoder.com/i/education/alg_tries.png
는하지만 트리는을 이해하고있는 방법은, 나는 모든 가장자리가 문자로 표시해야한다고 생각합니다. 비록 우리가 가장자리를위한 데이터 구조를 가지고 있지 않다는 것을 알고 있습니다. 그러나 가장자리를 더 정확하게 표시하지 않겠습니까?
또한 삽입을 구현하는 알고리즘입니다. 뭔가 잘못된 점이 있으면 알려주세요.
struct trie
{
int val;
trie* aplha[26];
}
trie* insert (trie *root, char *inp)
{
if (*input == '\0')
return root;
if (root == NULL)
{
root = (trie *) malloc(sizeof(trie));
int i = 0;
for (i=0;i<26;i++)
root->alpha[i] = NULL;
}
temp = *input - 'a';
root->alpha[temp] = insert (root->alpha[temp],input+1);
if (*(input+1)=='\0')
root->val = 1;
return root;
}
내가 어떻게 삭제를 구현할 수 있는지에 관해서는 어리둥절 해. 가능하다면 삭제 알고리즘을 도와주세요.
모든 노드에는 정확하게 하나의 가장자리가 들어가므로 가장자리 나 노드가 가리키는 노드에 문자를 그릴 수 있습니다. 그것은 똑같은 것입니다. – zwol
좋아,하지만 가장자리에 무게가 있고 노드가 아니라고 말할 때 나는 틀린가요? 아닙니다. – user2560730
당신이 그것에 대해 더 이해할 수있는 방법에 대해 생각할 수 있습니다. 그건 중요하지 않아. – zwol