题目描述
给定二叉树的根节点 root ,返回所有左叶子之和。
示例 1:
递归解析
- 确定递归函数的参数和返回值
判断一个树的左叶子节点之和,那么一定要传入树的根节点,递归函数的返回值为数值之和,所以为int
使用题目中给出的函数就可以了。
- 确定终止条件
如果遍历到空节点,那么左叶子值一定是0
- 确定单层递归的逻辑
当遇到左叶子节点的时候,记录数值,然后通过递归求取左子树左叶子之和,和 右子树左叶子之和,相加便是整个树的左叶子之和。
代码
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if(root == nullptr) return 0;
\
int left = sumOfLeftLeaves(root->left);
if(root->left && !root->left->left && !root->left->right) left = root->left;
int right = sumOfLeftLeaves(root->right);
int sum;
sum = left+right;
return sum;
}
};