原题:
解题:
采用层遍历二叉树,因此会用到队列,而判断是否为左叶子节点的条件是:
该节点是左孩子节点,且该左孩子节点的左和右孩子节点均为NULL
因此又以下AC代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root)
{
if(!root) return 0;
int sum = 0;
queue <TreeNode*> q;
q.push(root);
while(!q.empty())
{
TreeNode* cur = q.front();
q.pop();
if(cur->left)
{
if(!cur->left->left&&!cur->left->right)
{
sum += cur->left->val;
}
else
{
q.push(cur->left);
}
}
if(cur->right)
{
q.push(cur->right);
}
}
return sum;
}
};