java代码
时间: 2023-07-02 15:18:58 浏览: 68
好的,以下是一个Java代码示例,实现了统计树状结构的各个层级节点数量。假设你已经有了一个树状结构的节点类`TreeNode`,包含`id`和`children`两个属性:
```java
public class TreeNode {
private int id;
private List<TreeNode> children;
public TreeNode(int id) {
this.id = id;
this.children = new ArrayList<>();
}
public void addChild(TreeNode child) {
children.add(child);
}
// Getters and setters
// ...
}
```
那么,可以使用以下递归函数来统计各个层级的节点数量:
```java
public static Map<Integer, Integer> countNodes(TreeNode root) {
Map<Integer, Integer> levelCounts = new HashMap<>();
countNodes(root, 0, levelCounts);
return levelCounts;
}
private static void countNodes(TreeNode node, int level, Map<Integer, Integer> levelCounts) {
// 统计当前层级的节点数量
levelCounts.put(level, levelCounts.getOrDefault(level, 0) + 1);
// 递归遍历子节点
for (TreeNode child : node.getChildren()) {
countNodes(child, level + 1, levelCounts);
}
}
```
在`countNodes`函数中,首先创建了一个`HashMap`用于存储各个层级的节点数量。然后调用`countNodes`递归函数,传入根节点、层级0和`levelCounts`字典。
`countNodes`函数首先统计了当前层级的节点数量,并将其存储到`levelCounts`字典中。然后遍历当前节点的子节点,依次递归调用`countNodes`函数,并将层级加1。
最终,`countNodes`函数返回`levelCounts`字典,其中存储了各个层级的节点数量。
阅读全文