因此,我正在嘗試閱讀Trie,這是一個相對新的數據結構。在我讀過的地方,trie中的每個節點都包含一個整型變量,它將標記一個單詞的結尾,並且還包含26個指針,每個指針指向較低級別的節點(假設這些單詞只包含小字母字符)。Trie與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