不能一日不写代码!做题练手。
这种情况肯定一下就想到递归啦。首先明确返回条件(是叶子节点)。然后,对于每一层递归,其主角都是以参数root为根节点的树。递归要做的,就是把这棵树左子树的左叶子和找出来,然后把这棵树右子树的左叶子和找出来,然后返回二者的和。
代码如下:(数据是按层次遍历给出的。)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int sumOfLeftLeaves(struct TreeNode* root) {
int valeft = 0;
int varight = 0;
if(root == NULL)
return 0;
varight = sumOfLeftLeaves(root->right);
if((root->left!=NULL) && (root->left->left == NULL) && (root->left->right == NULL))
return root->left->val + varight;
else
valeft = sumOfLeftLeaves(root->left);
return varight + valeft;
}