左叶子之和

题目

给定二叉树的根节点 root ,返回所有左叶子之和。

示例 1:

输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:

输入: root = [1]
输出: 0

思路

  • 重点在于判断一个节点是不是左叶子,判断条件只能在其父节点上确定,所以在其父节点的时候就要做出判断

代码

class Solution {
public:
    int sum;
    void leftsum(TreeNode* cur){
        if(cur==NULL){
            return;
        }
        if(cur->left==NULL&&cur->right==NULL){
            return;
        }
        //在一个节点的父节点判断该节点是不是左叶子
        if(cur->left!=NULL&&cur->left->left==NULL&&cur->left->right==NULL){
            sum+=cur->left->val;
        }
        if(cur->left){
            leftsum(cur->left);
        }
        if(cur->right){
            leftsum(cur->right);
        }
        return;
    }
    int sumOfLeftLeaves(TreeNode* root) {
        sum=0;
        leftsum(root);
        return sum;
    }
};
posted @ 2023-03-18 13:05  铜锣湾陈昊男  阅读(6)  评论(0)    收藏  举报