我正在尝试构建一个TRIE,但为此我需要树的根可以像我想创建的那样指向儿子(因为它应该用作前缀树)。对象在JAVA中如何指向许多其他对象?
所以我想知道是否有可能让很多指针从我的根对象到我的所有轮胎的儿子? 我想看看究竟如何。
我正在尝试构建一个TRIE,但为此我需要树的根可以像我想创建的那样指向儿子(因为它应该用作前缀树)。对象在JAVA中如何指向许多其他对象?
所以我想知道是否有可能让很多指针从我的根对象到我的所有轮胎的儿子? 我想看看究竟如何。
要实现一个trie,你需要一种方法来将一个字母变成对下一个节点的引用。有2点明显的选择:
Node[] nodes = new Node[26];
(假设英语)Map<Character, Node> map = new HashMap<Character, Node>();
数组是经典的C的做法,但因为你是在Java中工作,我将开始与地图关闭,因为它更容易处理。
Java不使用术语pointers
。它使用术语references
。尽管引用在传递给方法时展现了诸如pass-by-value
等指针的某些行为,但它们仍称为references
。
转到实际问题。您可以使用参考文献的Collection
。请看下面的例子:
class Node {
List<Node> children = new ArrayList<Node>();
public void addNode(Node d) {
children.add(d);
}
/*Get Nth child */
public Node getChild(int n) {
if(n<children.size())
return children.get(n);
return null;
}
}
你也可以使用一个LinkedList
代替ArrayList
取决于你想要达到的目标。 A LinkedList
将提供快速插入和删除,而ArrayList
将为您提供快速迭代。
谢谢你。所以当我想使用我的引用什么是“get”方法? –
@noylevi编辑答案以演示获取子节点的一种可能方式(获取第N个子节点)。不要忘记点击勾号并接受答案,如果这个答案是你正在寻找的:) – CKing
你的意思是像一个指针列表? –
您是否考虑过使用列表
是啊,我知道我只是称他们为... –