📜  Java程序来计算树中叶节点的数量(1)

📅  最后修改于: 2023-12-03 15:02:06.224000             🧑  作者: Mango

计算树中叶节点的数量 - Java程序

在计算一颗树中叶节点的数量时,需要遍历树的每个节点,统计叶节点的数量。下面我们给出一份Java程序来实现此功能。

数据结构

我们定义一个树节点类 TreeNode 来描述每个节点。每个节点包括一个值 val 和两个子节点 leftright,如果子节点不存在,我们用 null 表示。

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}
计算叶节点的数量

我们可以使用递归的方法来遍历树的每个节点,并统计叶节点的数量。

public class Solution {
    public int countLeaves(TreeNode root) {
        if (root == null) {
            // 如果根节点为空,返回0
            return 0;
        } else if (root.left == null && root.right == null) {
            // 如果当前节点是叶节点,返回1
            return 1;
        } else {
            // 否则,递归遍历子节点
            return countLeaves(root.left) + countLeaves(root.right);
        }
    }
}

代码中,countLeaves 方法接收一个根节点 root,返回树中叶节点的数量。首先,我们判断根节点是否为空,如果是,则直接返回 0。如果不是,我们再判断当前节点是否是叶节点,即左右子节点均为空,如果是,则返回 1。否则,递归遍历当前节点的左右子节点,并返回他们的叶节点数量之和。

示例程序

下面的示例程序展示了如何使用上述算法计算树中叶节点的数量。这里我们构造一颗二叉树作为输入,并输出这棵树的叶节点数量。

public class Main {
    public static void main(String[] args) {
        // 构造一颗二叉树
        TreeNode node1 = new TreeNode(1);
        TreeNode node2 = new TreeNode(2);
        TreeNode node3 = new TreeNode(3);
        TreeNode node4 = new TreeNode(4);
        TreeNode node5 = new TreeNode(5);
        node1.left = node2;
        node1.right = node3;
        node2.left = node4;
        node2.right = node5;

        // 计算叶节点的数量
        Solution solution = new Solution();
        int count = solution.countLeaves(node1);

        // 输出结果
        System.out.println("树的叶节点数量为:" + count);
    }
}

运行结果如下:

树的叶节点数量为:3

在这个例子中,我们构造了如下的一颗二叉树。

     1
   /   \
  2     3
 / \
4   5

这棵树中包括 3 个叶节点,分别是 4、5 和 3。使用我们的计算方法,得到的结果也是 3,证明了我们的算法是正确的。

结论

在计算树中叶节点的数量时,我们可以使用递归的方法来遍历树的每个节点,并统计叶节点的数量。这一算法在计算树中节点数量、深度等问题中也得到了广泛的应用。