原题:
解题:
采用层遍历二叉树,因此会用到队列,而判断是否为左叶子节点的条件是:
该节点是左孩子节点,且该左孩子节点的左和右孩子节点均为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; } };