热门标签 | 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;
在这里插入图片描述


推荐阅读
  • td{border:1pxsolid#808080;}参考:和FMX相关的类(表)TFmxObjectIFreeNotification ... [详细]
  • flea,frame,db,使用,之 ... [详细]
  • 本教程介绍如何在C#中通过递归方法将具有父子关系的列表转换为树形结构。我们将详细探讨如何处理字符串类型的键值,并提供一个实用的示例。 ... [详细]
  • 线段树详解与实现
    本文详细介绍了线段树的基本概念及其在编程竞赛中的应用,并提供了一个具体的线段树实现代码示例。 ... [详细]
  • Level:  Medium题目描述:Givenanon-emptystringsandadictionarywordDictcontainingalistofnon-emptyw ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 管理UINavigationController中的手势返回 - Managing Swipe Back Gestures in UINavigationController
    本文介绍了如何在一个简单的闪存卡片应用中实现平滑的手势返回功能,以增强用户体验。 ... [详细]
  • Spring Boot使用AJAX从数据库读取数据异步刷新前端表格
      近期项目需要是实现一个通过筛选选取所需数据刷新表格的功能,因为表格只占页面的一小部分,不希望整个也页面都随之刷新,所以首先想到了使用AJAX来实现。  以下介绍解决方法(请忽视 ... [详细]
  • 题目编号:2049 [SDOI2008]Cave Exploration。题目描述了一种动态图操作场景,涉及三种基本操作:断开两个节点间的连接(destroy(a,b))、建立两个节点间的连接(connect(a,b))以及查询两节点是否连通(query(a,b))。所有操作均确保图中无环存在。 ... [详细]
  • 本文详细介绍了HashSet类,它是Set接口的一个实现,底层使用哈希表(实际上是HashMap实例)。HashSet不保证元素的迭代顺序,并且是非线程安全的。 ... [详细]
  • 前言:由于Android系统本身决定了其自身的单线程模型结构。在日常的开发过程中,我们又不能把所有的工作都交给主线程去处理(会造成UI卡顿现象)。因此,适当的创建子线程去处理一些耗 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 本文详细介绍了如何在Spring框架中设置事件发布器、定义事件监听器及响应事件的具体步骤。通过实现ApplicationEventPublisherAware接口来创建事件发布器,利用ApplicationEvent类定义自定义事件,并通过ApplicationListener接口来处理这些事件。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
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社区 版权所有