Every day a leetcode
题目来源:404. 左叶子之和
解法:DFS
左叶子结点=左孩子+叶子结点
用dfs遍历一次树,把符合要求的左叶子结点的值用sum统计出来。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int dfs(struct TreeNode* root){
int sum=0;
if(root == NULL) return 0;
if(root->left)//有左孩子
{
if(root->left->left == NULL && root->left->right == NULL)//左孩子是叶子结点
sum+=root->left->val;
}
return sum+dfs(root->left)+dfs(root->right);
}
int sumOfLeftLeaves(struct TreeNode* root){
return dfs(root);
}
结果: