题解:可以采用后序递归遍历的方式,先将左右子树的左叶子节点值计算出来,最后相加。
当遍历到左叶子节点的父节点时就开始处理,将左叶子节点的值记录下来。
代码如下:
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if (root == NULL) return 0;
int leftValue = 0;
if (root->left != NULL && root->left->left == NULL && root->left->right == NULL) {
leftValue = root->left->val;
}
return leftValue + sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right);
}
};
错误总结:
在递归中,在单层递归逻辑中,开始递归前决不能用ruturn来记录获得的值,否则递归就不会开始。