热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LeetCode——1302.层数最深叶子节点的和

题目描述:给你一棵二叉树的根节点root,请你返回层数最深的叶子节点的和。示例1:输入:root[1,2,3,4,5,n

题目描述:

给你一棵二叉树的根节点 root ,请你返回层数最深的叶子节点的和 。

示例 1:

在这里插入图片描述

输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]
输出:15
示例 2:

输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]
输出:19

提示:

  • 树中节点数目在范围 [1, 104] 之间。
  • 1 <&#61; Node.val <&#61; 100

dfs代码如下&#xff1a;

/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val &#61; val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val &#61; val;* this.left &#61; left;* this.right &#61; right;* }* }*/
class Solution {public int sum &#61; 0;public int deepestLeavesSum(TreeNode root) {int maxDepth &#61; depth(root);dfs(root, 1, maxDepth);return sum;}public void dfs(TreeNode root, int depth, int maxDepth) {if (root &#61;&#61; null) {return;}if (depth &#61;&#61; maxDepth) {sum &#43;&#61; root.val;}dfs(root.left, depth &#43; 1, maxDepth);dfs(root.right, depth &#43; 1, maxDepth);}public int depth(TreeNode root) {if (root &#61;&#61; null) {return 0;}return Math.max(depth(root.left), depth(root.right)) &#43; 1;}
}

bfs代码如下&#xff1a;

/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val &#61; val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val &#61; val;* this.left &#61; left;* this.right &#61; right;* }* }*/
class Solution {public int deepestLeavesSum(TreeNode root) {if (root &#61;&#61; null) {return 0;}Queue<TreeNode> que &#61; new LinkedList<>();que.offer(root);int ans &#61; 0;while (!que.isEmpty()) {List<Integer> r &#61; new ArrayList<>();int size &#61; que.size();ans &#61; 0;for (int i &#61; 0; i < size; i&#43;&#43;) {TreeNode t &#61; que.poll();ans &#43;&#61; t.val;if (t.left !&#61; null) {que.offer(t.left);}if (t.right !&#61; null) {que.offer(t.right);}}}return ans;}
}

执行结果&#xff1a;
在这里插入图片描述


推荐阅读
  • Java集合框架特性详解与开发实践笔记
    Java集合框架特性详解与开发实践笔记 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • Eclipse JFace Text框架中IDocument接口的getNumberOfLines方法详解与编程实例 ... [详细]
  • 在探讨Fragment的使用时,FragmentTransaction是不可或缺的一部分。作为管理Fragment操作的核心类,FragmentTransaction提供了诸如显示、隐藏、添加和移除等方法,这些方法在实际开发中被广泛使用。本文将深入解析FragmentTransaction的源码实现机制,帮助开发者更好地理解和优化Fragment的管理。通过分析其内部工作原理,读者可以掌握如何高效地进行Fragment的动态管理和性能优化。 ... [详细]
  • BZOJ 1835: 基站位置选择问题(动态规划与线段树优化) ... [详细]
  • 在多堆石子游戏中,通过分析Nim博弈策略,探讨了如何在限定时间和内存条件下实现最优解。本文详细研究了石子游戏中的数学原理和算法优化方法,旨在为参与者提供有效的策略指导。具体而言,文章讨论了不同堆数下的Nim值计算及其应用,帮助玩家在复杂的博弈环境中取得优势。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
  • 在Java中,匿名函数作为一种无名的函数结构,无法独立调用;而在JavaScript中,不仅有类似的匿名函数,还有立即执行函数(IIFE)和闭包等高级特性。立即执行函数同样基于匿名函数实现,但会在定义时立即执行,而闭包则通过嵌套函数来捕获外部变量,实现数据封装和持久化。这些不同的函数形式在实际开发中各有应用场景,理解其特点有助于更好地利用语言特性进行编程。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 探讨 `org.openide.windows.TopComponent.componentOpened()` 方法的应用及其代码实例分析 ... [详细]
  • 本文详细解析了 LeetCode 第 94 题——二叉树的中序遍历,并提供了基础实现方法。通过具体的示例,如输入根节点 `[1, null, 2, 3]` 返回 `[1, 3, 2]`,以及空树输入返回空列表 `[]`,帮助读者理解中序遍历的原理和实现步骤。文章还介绍了递归和迭代两种常见的遍历方法,为初学者提供了清晰的学习路径。 ... [详细]
  • Java队列机制深度解析与应用指南
    Java队列机制在并发编程中扮演着重要角色。本文深入解析了Java队列的各种实现类及其应用场景,包括`LinkedList`、`ArrayBlockingQueue`和`PriorityQueue`等,并探讨了它们在高并发环境下的性能表现和适用场景。通过详细分析这些队列的内部机制和使用技巧,帮助开发者更好地理解和应用Java队列,提升系统的设计和架构能力。 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
author-avatar
mobiledu2502875213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有