力扣404 左叶子之和

404.左叶子之和

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

示例 1:

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

示例 2:

复制代码
输入: root = [1]
输出: 0

提示:

  • 节点数在 [1, 1000] 范围内
  • -1000 <= Node.val <= 1000

判断当前节点是不是左叶子是无法判断的,必须要通过节点的父节点来判断其左孩子是不是左叶子,如果该节点的左节点不为空,该节点的左节点的左节点为空,该节点的左节点的右节点为空,则找到了一个左叶子。

具体代码实现如下:

java 复制代码
    public static void main(String[] args) {
        TreeNode treeNode = new TreeNode(3);
        treeNode.left = new TreeNode(9);
        treeNode.right = new TreeNode(20);
        treeNode.right.left = new TreeNode(15);
        treeNode.right.right = new TreeNode(7);
        System.out.println(sumOfLeftLeaves(treeNode));
    }

    public static int sumOfLeftLeaves(TreeNode root) {
        int res = 0;
        res = dfs(root);
        return res;
    }

    public static int dfs(TreeNode root){
        if (root == null){
            return 0;
        }
        if (root.left != null && root.left.left == null && root.left.right == null){ // 判断是否是左叶子
            int right = dfs(root.right);
            return root.left.val + right;
        }
        int left = dfs(root.left);
        int right = dfs(root.right);
        return left + right;
    }

以上为记录分享用,代码较差请见谅

相关推荐
早睡的叶子20 小时前
AI 编译器中的指令调度算法调研
人工智能·算法
Tisfy20 小时前
LeetCode 3583.统计特殊三元组:哈希表计数
算法·leetcode·散列表·题解·哈希表·计数
零一科技20 小时前
瑞吉外卖项目,后端源码解析
java·spring boot·后端
Jasmine_llq20 小时前
《P2303 [SDOI2012] Longge 的问题》
数据结构·算法·质因数分解(试除法)·数论函数递推计算·约数和函数变体
浪潮IT馆20 小时前
win11安装maven
java·maven
g323086320 小时前
分布式框架seata AT模式源码分析
java·数据库·分布式
狂奔小菜鸡20 小时前
Day26 | Java集合框架概览
java·后端·java ee
im_AMBER20 小时前
Leetcode 73 数位和相等数对的最大和 | 等价多米诺骨牌对的数量
数据结构·笔记·学习·算法·leetcode
♡喜欢做梦20 小时前
自动化测试入门(上)
java·css·selenium·测试工具·测试用例