📅  最后修改于: 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$ 是二叉树中节点的数量。