左叶子之和

给定二叉树的根节点 root ,返回所有左叶子之和。

示例 1:

左叶子之和_第1张图片

输入: root = [3,9,20,null,null,15,7] 
输出: 24 
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

示例 2:

输入: root = [1]
输出: 0

提示:

  • 节点数在 [1, 1000] 范围内
  • -1000 <= Node.val <= 1000
/**
 * 模板题 迭代法
 * @param root
 * @return
 */
int sumOfLeftLeaves(TreeNode *root) {
    queue que;
    //加入根节点
    if (root != NULL) que.push(root);
    //记录求和
    int sum = 0;
    //循环条件
    while (!que.empty()) {
        //用于控制每层结点的个数
        int size = que.size();
        //将元素放入队列中
        for (int i = 0; i < size; i++) {
            //取出元素
            TreeNode *node = que.front();
            //弹出元素
            que.pop();
            //判断是否是父子树左孩子的叶子结点
            if (node->left != nullptr && node->left->left == nullptr && node->left->right == nullptr)
                sum += node->left->val;
            //加入左右结点
            if (node->left) que.push(node->left);
            if (node->right) que.push(node->right);
        }
    }
    return sum;
}

你可能感兴趣的:(算法)