刷题-力扣-404. 左叶子之和

404. 左叶子之和

题目链接

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-left-leaves
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

计算给定二叉树的所有左叶子之和。

示例:

    3
   / \
  9  20
    /  \
   15   7

在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

题目分析

  1. 根据题目描述计算所有左叶子节点的和
  2. 深度优先搜索遍历每个节点,若左子树是叶子节点就计算给叶子节点的值

代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int sumOfLeftLeaves(TreeNode* root) {
        int sum = 0;
        dfs(root, sum);
        return sum;
    }

private:
    void dfs(TreeNode* root, int& sum) {
        if (!root) return;
        if (root->left && root->left->left == nullptr && root->left->right == nullptr) {
            sum += root->left->val;
        }
        dfs(root->left, sum);
        dfs(root->right, sum);
        return;
    }

};
上一篇:vue-cli坑比系列


下一篇:post接口报404异常解决