xqn2017

导航

404. Sum of Left Leaves

原题:

404. Sum of Left Leaves

解题:

采用层遍历二叉树,因此会用到队列,而判断是否为左叶子节点的条件是:

该节点是左孩子节点,且该左孩子节点的左和右孩子节点均为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;		
    }
};

  

posted on 2018-02-27 18:49  xqn2017  阅读(109)  评论(0编辑  收藏  举报