解题思路:用后序遍历找左孩子,需要注意的是左叶子需要通过其父节点来判断其是不是左叶子
具体代码:
class Solution {
public:
int sumOfLeftLeaves(TreeNode * root) {
if(root==NULL)return 0;
if(root->left==NULL&&root->right==NULL)return 0;
int leftnum=sumOfLeftLeaves(root->left);
if(root->left&&root->left->left==NULL&&root->left->right==NULL){
leftnum=root->left->val;
}
int rightnum=sumOfLeftLeaves(root->right);
int sum=leftnum+rightnum;
return sum;
}
};
题目如下:
给定二叉树的根节点 root
,返回所有左叶子之和。
示例 1:
输入: root = [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:
输入: root = [1] 输出: 0