我正在使用TRIE数据结构来实现字典,对于实现TrieNode的子代时应该使用哪种数据类型我有些困惑
我应该使用长度为26的节点数组
class TrieNode
{
TrieNode[] children = new TrieNode[ALPHABET_SIZE];
// isEndOfWord is true if the node represents
// end of a word
boolean isEndOfWord;
TrieNode(){
isEndOfWord = false;
for (int i = 0; i < ALPHABET_SIZE; i++)
children[i] = null;
}
};
或者我应该采用哈希图实施方式
class TrieNode{
char value;
boolean isEnd;
Map<Character,TrieNode> children;
public TrieNode(char value) {
this.value = value;
}
}
哪一种效率更高,消耗的内存更少?