题目:
给定二叉树的根节点 root
,返回所有左叶子之和。
示例 1:
输入: root = [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:
输入: root = [1] 输出: 0
提示:
- 节点数在
[1, 1000]
范围内 -1000 <= Node.val <= 1000
代码:
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if (root == NULL) return 0; // 根节点为空
if (root->left == NULL && root->right == NULL){ // 当前父节点是叶子节点,不必也不会再往下
return 0;
}
// 先算左右节点,用后序遍历
int leftValue = sumOfLeftLeaves(root->left); //左
if (root->left != NULL && root->left->left == NULL && root->left->right == NULL){
leftValue = root->left->val;
}
int rightValue = sumOfLeftLeaves(root->right);
return leftValue + rightValue;
}
};