一、题目描述
给定二叉树的根节点 root ,返回所有左叶子之和。
示例 1:
输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:
输入: root = [1]
输出: 0
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sum-of-left-leaves
二、运行结果
三、求解思路
对于二叉树类型的题,递归方式求解是比较容易想到也比较简单的思路。这里也采用递归求解的方式。
四、代码
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if(root == nullptr)
return 0;
int ans = 0;
dfs(root, ans);
return ans;
}
//递归求解
void dfs(TreeNode* root, int& ans)
{
//空节点或叶子节点
if(root == nullptr || root->left ==nullptr && root->right == nullptr)
return;
//当前节点的左子节点是叶子节点
if(root->left && root->left->left==nullptr && root->left->right==nullptr)
ans += root->left->val;
if(root->left) //左孩子节点存在
dfs(root->left, ans);
if(root->right) //右孩子节点存在
dfs(root->right, ans);
}
};