在树状结构中遍历n深度

时间:2018-12-24 09:11:42

标签: java tree iterator

如何以编程方式在树状结构上获得n深度迭代器? 根源在于我

List<Node>

每个节点都有

Map<Integer,List<Node>> 

n + 1个深度。

我已经固定了1个深度:

// DEPTH 1
nodeData.forEach(baseNode -> {
    baseNode.getChildNodes().entrySet().forEach(baseNodeChildeNodes -> {
            genCombOnePass(baseNodeChildeNodes, 2);
        });
});

// DEPTH 2
nodeData.forEach(baseNode -> {
    baseNode.getChildNodes().entrySet().forEach(baseNodeChildeNodes -> {
        baseNodeChildeNodes.getValue().forEach(childNodeEs -> {
            childNodeEs.getChildNodes().entrySet().forEach(childNode -> {
                genCombOnePass(childNode, 3);
            });
        });
    });
});

但是我需要迭代。 1-9深度。

1 个答案:

答案 0 :(得分:0)

您需要某种递归函数来实现所需的功能:

static void depthTraversal(Node root, int depth, int maxDepth) {
    if (depth == maxDepth) { // if you reached max level - exit
        return;
    }
    if (root == null || root.getChildNodes() == null) { // if you reached null child - exit
        return;
    }
    root.getChildNodes().forEach((key, value) -> value.forEach(node -> {
        // do what you need with your nodes
        depthTraversal(node, depth + 1, maxDepth); // recursively go to next level
    }));
}