📌  相关文章
📜  查找给定二叉树中所有左叶的总和(1)

📅  最后修改于: 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。

总结

递归是解决二叉树相关问题的一种常见方法,我们可以利用递归函数来遍历整个二叉树,同时判断每个节点是否符合条件,最终得到答案。在解决具体问题的时候,我们需要仔细思考每个节点的情况,根据不同的情况来选择不同的处理方式。