LeetCode404 左叶子之和

前言

题目: 404. 左叶子之和
文档: 代码随想录------左叶子之和
编程语言: C++
解题状态: 成功解答!

思路

注意左叶子节点的定义:节点A的左孩子不为空,且左孩子的左右孩子都为空(说明是叶子节点),那么A节点的左孩子为左叶子节点。

代码

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    void sumLeft(TreeNode* node, int& sum) {
        if (node == NULL) return;
        TreeNode* leftNode = node -> left;
        TreeNode* rightNode = node -> right;
        if (leftNode) {
            if (leftNode -> left == NULL && leftNode -> right == NULL) {
                sum += leftNode -> val;
            } else {
                sumLeft(leftNode, sum);
            }
        }

        if (rightNode) {
            sumLeft(rightNode, sum);
        }
    }
    int sumOfLeftLeaves(TreeNode* root) {
        int sum = 0;
        sumLeft(root, sum);
        return sum;
    }
};
相关推荐
victd6 分钟前
什么是AutoRec?
算法
陈壮实的搬砖日记7 分钟前
抛硬币背后的秘密-通俗玩转二项分布
算法
前端 贾公子10 分钟前
力扣 83 . 删除排序链表中的重复元素:深入解析与实现
数据结构·算法
Y1nhl11 分钟前
力扣hot100_链表(3)_python版本
python·算法·leetcode·链表·职场和发展
_w_z_j_21 分钟前
C++----模拟实现string
开发语言·c++
特立独行的猫a22 分钟前
redis客户端库redis++在嵌入式Linux下的交叉编译及使用
linux·数据库·c++·redis·redis客户端库
张槊哲24 分钟前
const(C++)
开发语言·c++
oioihoii29 分钟前
C++23 中 constexpr 的重要改动
c++·算法·c++23
前端 贾公子35 分钟前
详解 LeetCode 第 242 题 - 有效的字母组
算法·leetcode·职场和发展
sofaraway1340 分钟前
【多目标进化算法】 MOEA/D算法(知识点)
算法