java 树形 递归统计
时间: 2023-10-14 20:06:32 浏览: 134
要统计树形结构中节点数量的话,可以使用递归算法来实现。具体实现步骤如下:
1. 定义一个 TreeNode 类表示树节点,包含值和子节点列表。
2. 定义一个递归函数,接收一个 TreeNode 对象作为参数,返回以该节点为根节点的子树中节点数量。
3. 在递归函数中,首先统计该节点本身的贡献,然后递归遍历所有子节点,统计它们的贡献并累加起来。
下面是 Java 代码示例:
```
public class TreeNode {
int val;
List<TreeNode> children;
public TreeNode(int val) {
this.val = val;
children = new ArrayList<>();
}
}
public int countNodes(TreeNode root) {
if (root == null) {
return 0;
}
int count = 1; // 统计当前节点的贡献
for (TreeNode child : root.children) { // 遍历所有子节点
count += countNodes(child); // 递归统计子节点的贡献
}
return count;
}
```
其中,countNodes 函数接收一个 TreeNode 对象作为参数,返回以该节点为根节点的子树中节点数量。如果根节点为空,直接返回 0。否则,先统计当前节点的贡献,然后遍历所有子节点,递归统计它们的贡献并累加起来,最终返回所有节点的总数。
阅读全文