题目:
- 给定二叉树的根节点
root
,返回所有左叶子之和。
示例:
- 输入: $root = [3,9,20,null,null,15,7] $
- 输出: 24 24 24
- 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
解题思路一:(递归)
- 确定递归函数的参数和返回值:
int dfs(TreeNode* cur)
- 确定终止条件:
if(cur == NULL) return 0;
if (cur->left == NULL && cur->right== NULL) return 0;
- 确定单层递归逻辑: 先序遍历顺序为: 左 − > 中 − > 右 左->中->右 左−>中−>右
int left = dfs(cur->left);
if(cur->left && cur->left->left == NULL && cur->left->right == NULL){
left = cur->left->val;
}
int right = dfs(cur->right);
return left + right;
C++版整体代码
class Solution {
public:
int dfs(TreeNode* cur){
if(cur == NULL) return 0;
if (cur->left == NULL && cur->right== NULL) return 0;
int left = dfs(cur->left);
if(cur->left && cur->left->left == NULL && cur->left->right == NULL){
left = cur->left->val;
}
int right = dfs(cur->right);
return left + right;
}
int sumOfLeftLeaves(TreeNode* root) {
return dfs(root);
}
};