给定二叉树的根节点 root
,返回所有左叶子之和。
示例 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<TreeNode *> 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;
}