给定二叉树的根节点 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);
- }
- };