404. 左叶子之和

Posted 秃头MAN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了404. 左叶子之和相关的知识,希望对你有一定的参考价值。

404. 左叶子之和

题目描述

给定二叉树的根节点 root ,返回所有左叶子之和。

输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:

输入: root = [1]
输出: 0

来源:力扣(LeetCode)

思路

既然是求出当前左叶子的和,意思就是找出我们所有的叶子节点,然后再筛选一下,我们前面做过找出所有的叶子节点,我用的时前序遍历,求出结果,本题就是在求出所有的叶子节点的基础上,稍微改造一下,我们设置一个标志位,标志我们当前遍历的为哪一个节点,是左节点还是右节点,之后就很简单了

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode 
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() 
 *     TreeNode(int val)  this.val = val; 
 *     TreeNode(int val, TreeNode left, TreeNode right) 
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     
 * 
 */
class Solution 
    public int sum = 0;
    public int sumOfLeftLeaves(TreeNode root) 
        demo(root,0);
        return sum;
    

    // 确定递归函数的参数和返回值 参数 root ,int 
    // 每一次递归时,都传递一个参数,告诉当前函数,节点时left 节点还是 right节点
    // 0 标识是根节点,第一次传入 1 left 2 right
    public void demo(TreeNode root , int type)
        // 确定递归终止的条件
        if(root == null) return;
        // 确定单层逻辑
        if(root.left == null && root.right == null && type == 1)
            sum += root.val;
            return;
        
        demo(root.left,1);
        demo(root.right,2);
    

以上是关于404. 左叶子之和的主要内容,如果未能解决你的问题,请参考以下文章

404. 左叶子之和

404. 左叶子之和

404. 左叶子之和

LeetCode-404-左叶子之和

leetcode 404. 左叶子之和

leetcode404_左叶子之和