📅  最后修改于: 2023-12-03 15:40:25.327000             🧑  作者: Mango
在二叉树中,如果一个节点既是叶子节点,同时也是它父亲节点的左孩子,则我们称其为左叶节点。现在我们需要编写一个函数,找到给定二叉树中所有左叶节点的值之和。
对于这个问题,我们可以使用递归的方法来解决。对于每个节点,首先判断它是否是叶子节点,如果是叶子节点,同时也是它父亲节点的左孩子,那么就将它的值累加到结果中。否则,我们就继续遍历它的左右子节点。
下面是这个问题的具体实现:
public int sumOfLeftLeaves(TreeNode root) {
if (root == null) {
return 0;
}
int sum = 0;
if (root.left != null && root.left.left == null && root.left.right == null) {
sum += root.left.val;
}
sum += sumOfLeftLeaves(root.left);
sum += sumOfLeftLeaves(root.right);
return sum;
}
下面是一个示例二叉树:
3
/ \
9 20
/ \
15 7
这个二叉树中的所有左叶节点的值之和为 9 + 15 = 24,因此我们的函数应该返回 24。
递归是解决二叉树相关问题的一种常见方法,我们可以利用递归函数来遍历整个二叉树,同时判断每个节点是否符合条件,最终得到答案。在解决具体问题的时候,我们需要仔细思考每个节点的情况,根据不同的情况来选择不同的处理方式。