[Leetcode] 404. Sum of Left Leaves 解题报告

来源:互联网 发布:阿里云 任务调度 编辑:程序博客网 时间:2024/05/17 06:04

题目

Find the sum of all left leaves in a given binary tree.

Example:

    3   / \  9  20    /  \   15   7There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.

思路

一般情况下,树问题最好的解决方法都是递归,本题也不例外。这里的关键点是判断某结点的左孩子是否是叶子结点,如果是,则参与求和,否则递归求解;对于右孩子,则直接递归求解即可。

代码

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    int sumOfLeftLeaves(TreeNode* root) {        if (!root) {            return 0;        }        int val = 0;        TreeNode *left = root->left;        if(left && !left->left && !left->right) {   // root->left is a leaf            val += root->left->val;        }        val += sumOfLeftLeaves(root->left);        val += sumOfLeftLeaves(root->right);        return val;    }};

原创粉丝点击