如何以编程方式在树状结构上获得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深度。
答案 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
}));
}