我已经开始实现Java树结构:
Root(Key, Value) --> NODE1(Key, Value)
--> NODE2(Key, Value)
--> NODE3(Key, Value) --> NODE4(Key, Value)
--> NODE5(Key, Value)
--> ...
因此,您可以看到根节点可以包含未定义数量的子节点,并且此子节点还可以包含未定义数量的子节点。
所以现在我的问题是,如何只在给定密钥并从根节点开始查找NODE5
?
(记住:这棵树真的很大!)
答案 0 :(得分:3)
你需要走过树,检查每个孩子。这可以通过递归来完成。尝试类似的东西:
public Node getNode(Key key, List<Node> children) {
if (children != null) {
for (Node child : children) {
if (child.getKey().equals(key)) {
return child;
} else {
return getNode(key, child.getChildren());
}
}
}
}
答案 1 :(得分:0)
如果您的树未分类,则必须查看整棵树。有很多常见的方法可以做到这一点。它被称为(traversal)。有3种方式(Pre / In / Post顺序)。 Normaly你将这种行为实现为递归函数。