404.左叶子之和

一、题目描述

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

示例:

1
2
3
4
5
6
7
    3
/ \
9 20
/ \
15 7

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

二、题解

1.递归

什么叫左叶子?

答:左孩子节点不为空且左孩子没有孩子节点。

递归判断左右子树,返回所有左叶子之和。

2.代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/

int sumOfLeftLeaves(struct TreeNode *root)
{
if (root == NULL)
return 0;
int res = 0;
//左叶子:
if (root->left != NULL && root->left->left == NULL && root->left->right == NULL)
res += root->left->val;
return res + sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right);
}