- 左叶子之和
给定二叉树的根节点 root ,返回所有左叶子之和。
提示:
- 节点数在 [1, 1000] 范围内
- -1000 <= Node.val <= 1000
采用的是递归法
s1. 确定递归函数的参数和返回值
s2. 确定终止条件
if(root == NULL)
return 0;
s3. 确定单层递归的逻辑
- 当遇到左叶子节点的时候,记录数值,然后通过递归求取左子树左叶子之和,和 右子树左叶子之和,相加即可。
AC:
/*
* @lc app=leetcode.cn id=404 lang=cpp
*
* [404] 左叶子之和
*/
// @lc code=start
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if(root == NULL)
return 0;
int leftValue = 0;
if(root->left && !(root->left->left) && !(root->left->right))
{
leftValue = root->left->val;
}
return leftValue + sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right);
}
};
// @lc code=end