解析Java树结构,而节点可以包含ArrayList';s
我已经开始实现Java树结构:解析Java树结构,而节点可以包含ArrayList';s,java,data-structures,tree,Java,Data Structures,Tree,我已经开始实现Java树结构: Root(Key, Value) --> NODE1(Key, Value) --> NODE2(Key, Value) --> NODE3(Key, Value) --> NODE4(Key, Value) --> NODE5(Key, Value)
Root(Key, Value) --> NODE1(Key, Value)
--> NODE2(Key, Value)
--> NODE3(Key, Value) --> NODE4(Key, Value)
--> NODE5(Key, Value)
--> ...
在这里,您可以看到根节点可以包含未定义数量的子节点,而这个子节点也可以包含未定义数量的子节点。
所以现在我的问题是,如何在只给定键并从根节点开始的情况下查找NODE5
(记住:这棵树可能非常大!)你需要穿过这棵树,检查每个孩子。这可以通过递归实现。尝试类似的方法:
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());
}
}
}
}
public节点getNode(键,列出子节点){
如果(子项!=null){
用于(节点子节点:子节点){
if(child.getKey().equals(key)){
返回儿童;
}否则{
返回getNode(key,child.getChildren());
}
}
}
}
如果树未排序,则必须查看整个树。有一些常见的方法可以做到这一点。它被称为()。有3种方式(预订单/中订单/后订单)。通常,可以将这种行为实现为递归函数 尝试使用递归。。。将使搜索变得非常容易。。。