力扣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;
    }

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

相关推荐
大阿明3 小时前
Spring Boot(快速上手)
java·spring boot·后端
Liu628883 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
bearpping3 小时前
Java进阶,时间与日期,包装类,正则表达式
java
邵奈一3 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
AI科技星3 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
sunwenjian8863 小时前
Java进阶——IO 流
java·开发语言·python
参.商.4 小时前
【Day41】143. 重排链表
leetcode·golang
sinat_255487814 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
皮皮林5514 小时前
如何画出一张优秀的架构图?(老鸟必备)
java
百锦再4 小时前
Java 并发编程进阶,从线程池、锁、AQS 到并发容器与性能调优全解析
java·开发语言·jvm·spring·kafka·tomcat·maven