java计算二叉树各种节点个数
时间: 2024-09-07 08:03:20 浏览: 39
Java实现二叉树的建立、计算高度与递归输出操作示例
5星 · 资源好评率100%
在Java中,计算二叉树的各种节点个数通常涉及对树结构的深度优先遍历(如前序、中序或后序遍历),因为每个节点只会访问一次。以下是几种常见情况下的节点计数:
1. **叶子节点(无子节点的节点)**:在递归遍历时,如果遇到的是null,则说明遇到了叶子节点。在中序遍历(左-根-右)中,可以立即返回0,因为左右子节点都为null。
```java
int countLeaves(TreeNode node) {
if (node == null) return 0;
else if (node.left == null && node.right == null) return 1;
else return countLeaves(node.left) + countLeaves(node.right);
}
```
2. **总节点数**:需要计算所有节点,包括根节点,可以采用同样的递归方法:
```java
int totalNodes(TreeNode node) {
if (node != null) return 1 + totalNodes(node.left) + totalNodes(node.right);
else return 0;
}
```
3. **分支节点(有子节点的节点)**:对于非叶子节点,你可以简单地在遍历过程中跳过它们:
```java
int branchNodes(TreeNode node) {
if (node != null && (node.left != null || node.right != null)) return 1;
else return 0;
}
```
4. **只统计某一侧的子节点**:比如仅统计左子树或右子树的节点数,只需修改相应的递归路径即可。
请注意,`TreeNode`是一个假设存在的二叉树结点类,它应该包含指向左右子节点的引用,例如`public class TreeNode { int val; TreeNode left; TreeNode right;}`。
阅读全文