题目(leecode T404):
给定二叉树的根节点 root ,返回所有左叶子之和。

方法:
迭代法:计算所有的左叶子节点,那我们就必然要找到所有的左叶子节点。那么怎么找呢?如何针对cur->left == NULL&&cur->right ==NULL的话只能判断当前节点是叶子节点,而无法判断出具体是左还是右。因此我们需要从左叶子节点的父节点进行判断,即cur->left != NULL&&cur->left == NULL&&cur->right ==NULL,这样的节点的左孩子结点就是一个左叶子节点。我们这样就确定好了找到左叶子节点的判断逻辑。下面分析迭代的三部曲。
1:确定传入的参数和返回值,传入的参数就是要处理的树节点,返回值是左叶子节点的数值之和,因此需要为int,进行迭代累加得到的就是做叶子节点的和。
2:确定终止条件,当我们遍历到了空节点时,肯定是没有左孩子结点了,就需要终止。
3:确定单层的处理逻辑,当我们找到了左叶子节点时,就记录左叶子节点的值,同时递归根节点的左右子树,最后将两值相加即可得到该树的左叶子节点之和。
题解:
class Solution {
public:
    int sumOfLeftLeaves(TreeNode* root) {
        if(root == 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);    //递归右子树
        int sum = leftValue + rightValue;
        return sum;
    }
};
















![[C++]vector的模拟实现](https://img-blog.csdnimg.cn/direct/6e095ff114db4b70b559043ddd142067.png)

