Easy
75084FavoriteShare
Find the sum of all left leaves in a given binary tree.
Example:
3
/ \
9 20
/ \
15 7
There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.
C++:
/*
* @Autor: SourDumplings
* @Date: 2019-09-23 08:05:53
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/sum-of-left-leaves/
*/
/**
* 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)
{
int res = 0;
doSumOfLeftLeaves(root, nullptr, res);
return res;
}
void doSumOfLeftLeaves(TreeNode *x, TreeNode *p, int &res)
{
if (x)
{
if (!x->left && !x->right)
{
if (p && x == p->left)
{
res += x->val;
}
}
else
{
if (x->left)
{
doSumOfLeftLeaves(x->left, x, res);
}
if (x->right)
{
doSumOfLeftLeaves(x->right, x, res);
}
}
}
}
};
Java:
/*
* @Autor: SourDumplings
* @Date: 2019-09-23 08:12:07
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/sum-of-left-leaves/
*/
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution
{
private int res = 0;
public int sumOfLeftLeaves(TreeNode root)
{
doSumOfLeftLeaves(root, null);
return res;
}
public void doSumOfLeftLeaves(TreeNode x, TreeNode p)
{
if (x != null)
{
if (x.left == null && x.right == null)
{
if (p != null && x == p.left)
{
res += x.val;
}
}
else
{
if (x.left != null)
{
doSumOfLeftLeaves(x.left, x);
}
if (x.right != null)
{
doSumOfLeftLeaves(x.right, x);
}
}
}
}
}