解析Java树结构,而节点可以包含ArrayList

时间:2013-12-16 10:07:08

标签: java data-structures tree

我已经开始实现Java树结构:

Root(Key, Value) --> NODE1(Key, Value)
                 --> NODE2(Key, Value)
                 --> NODE3(Key, Value) --> NODE4(Key, Value)
                                       --> NODE5(Key, Value)
                                       --> ...

因此,您可以看到根节点可以包含未定义数量的子节点,并且此子节点还可以包含未定义数量的子节点。 所以现在我的问题是,如何只在给定密钥并从根节点开始查找NODE5

(记住:这棵树真的很大!)

2 个答案:

答案 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你将这种行为实现为递归函数。