我正在实现一个特里结构,它将在字符串中存储子字符串及其出现的次数。我的特里中的每个节点都会有一个称为子节点的Map,它将存储主节点的任何子节点。
我的问题是,最终,这些子节点将拥有自己的子节点,而且我不知道该如何从“地图中的地图中的地图...”中检索数据。
这是我到目前为止的内容:
private class TrieNode
{
private T data; //will hold the substring
int count; //how many occurrences of it were in the string
private Map<TrieNode, Integer> children; //will hold subnodes
private boolean isWord; //marks the end of a word if a substring is the last substring of a String
private TrieNode(T data)
{
this.data = data;
count = 1;
children = new HashMap<TrieNode, Integer>();
isWord = false;
}
}
我如何从子节点中检索数据,这些子节点本身下面可能还有其他子节点?
附言如果无法足够清楚地解释它,我深表歉意-我在递归方面遇到问题。谢谢。
最佳答案
我不明白为什么要将字符串存储在称为T的类型中。这听起来像是泛型类型,但尚未在类中声明它。
无论如何,我想您将需要一个Map<T, TrieNode>
来容纳每个子项由其子字符串键入的键。这样,您可以重新进入另一个TrieNode
,它又具有另一个相同类型的映射。