题解:可以采用后序递归遍历的方式,先将左右子树的左叶子节点值计算出来,最后相加。
当遍历到左叶子节点的父节点时就开始处理,将左叶子节点的值记录下来。
代码如下:
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来记录获得的值,否则递归就不会开始。