leetcode 404. 左叶子之和

大耗子 2021年02月21日 18次浏览

题目: 404. 左叶子之和

404. 左叶子之和

难度简单

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

示例:

    3
   / \
  9  20
    /  \
   15   7

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

解题思路

递归判断该结点是不是叶子,同时传入参数告诉该结点,是不是左子树。

同时满足叶子结点且是左子树,则加入总和中。

代码

class Solution {
private:
    int sum;
public:
    int sumOfLeftLeaves(TreeNode* root) {
        if(!root) return 0;
        sumCore(root, 0);
       
        return sum;
    }
    void sumCore(TreeNode* root, int isLeft){
        if(!root) return ;
        if(!root->left && !root->right && isLeft) sum+= root->val;
        sumCore(root->left, 1);
        sumCore(root->right, 0);
    }
};