📌  相关文章
📜  最低级别的叶节点总和(1)

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

最低级别的叶节点总和

在二叉树中,叶节点指的是没有子节点的节点,即没有左子节点和右子节点的节点。我们可以通过遍历整个二叉树,找出所有叶节点,然后计算它们的值的总和来得到最低级别的叶节点总和。本文将介绍如何用代码实现这个功能。

实现思路

我们可以使用深度优先搜索(DFS)来遍历整个二叉树。当我们遍历到一个叶节点时,将它的值加到一个总和中。这个总和最终将是最低级别的叶节点总和。

为了遍历二叉树,我们可以使用递归。我们首先访问根节点,然后遍历根节点的左子节点和右子节点。如果左子节点存在,则递归遍历左子节点。如果右子节点存在,则递归遍历右子节点。当我们遍历到叶节点时,将它的值加到总和中。最终返回总和即可。

代码实现

下面是用Java实现最低级别的叶节点总和的代码:

class Solution {
    private int sum = 0;
    
    public int sumOfLeftLeaves(TreeNode root) {
        if (root == null) {
            return 0;
        }
        dfs(root);
        return sum;
    }
    
    private void dfs(TreeNode node) {
        if (node.left != null) {
            if (node.left.left == null && node.left.right == null) {
                sum += node.left.val;
            }
            dfs(node.left);
        }
        if (node.right != null) {
            dfs(node.right);
        }
    }
}

这里使用了一个私有变量 sum 来保存总和。我们定义了一个公共方法 sumOfLeftLeaves,用于调用递归函数 dfs。在 dfs 函数中,我们先检查左子节点是否为空,如果不为空,则继续检查左子节点是否是叶节点。如果是叶节点,则将它的值加到总和中,并递归遍历右子节点。

总结

本文介绍了如何用代码实现最低级别的叶节点总和。我们使用了深度优先搜索来遍历整个二叉树,并使用递归来实现。这个算法的时间复杂度为 $O(n)$,其中 $n$ 是二叉树中节点的数量。