力扣:129. 求根节点到叶节点数字之和(Python3)

news2024/9/22 1:14:49

题目:

给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。

每条从根节点到叶节点的路径都代表一个数字:

  • 例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。

计算从根节点到叶节点生成的 所有数字之和 。

叶节点 是指没有子节点的节点。

来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

示例:

示例 1:

输入:root = [1,2,3]
输出:25
解释:从根到叶子节点路径 1->2 代表数字 12 从根到叶子节点路径 1->3 代表数字 13 因此,数字总和 = 12 + 13 = 25


示例 2:

输入:root = [4,9,0,5,1]
输出:1026

解释:从根到叶子节点路径 4->9->5 代表数字 495 从根到叶子节点路径 4->9->1 代表数字 491 从根到叶子节点路径 4->0 代表数字 40 因此,数字总和 = 495 + 491 + 40 = 1026

解法:

BFS,记录当前结点和总和,如果有左右结点就加入队,并更新总和,如果是叶结点,把总和加入结果。

代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def sumNumbers(self, root: Optional[TreeNode]) -> int:
        q = [[root, root.val]]
        total = 0
        while q:
            pre, num = q.pop(0)
            if pre.left is not None:
                q.append([pre.left, num * 10 + pre.left.val])
            if pre.right is not None:
                q.append([pre.right, num * 10 + pre.right.val])
            if pre.left is None and pre.right is None:
                total += num
        return total

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1075656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android攻城狮学鸿蒙-配置

1、config.json配置 鸿蒙中的config.json应该类似于Android开发中Manifest.xml,可以进行页面的配置。根据顺序,会识别启动应用的时候,要打开哪个界面。 2、 Ability详解,以及与Android的Activity对比。 他人的学习文章连接&…

【运维日常】运维必备的 免费 在线画图工具,真的很好用!

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

外贸客户开发信怎么写?如何撰写营销邮件?

外贸客户开发信模板有哪些?高回复率的开发信技巧? 外贸客户开发信是一项至关重要的工作。这封信通常是你与潜在客户建立联系的第一步,因此必须仔细策划和撰写。蜂邮EDM将介绍如何写一封令人印象深刻的外贸客户开发信,以吸引潜在客…

PHP聊天系统源码 在线聊天系统网站源码 后台自适应PC与移动端

程序前台与后台自适应PC与移动端,支持一对多交流,可以自由创建新的房间与解散创建的房间,集成签到功能,等级功能,房间创建者可以对用户进行禁言、拉黑处理,房间可以由房间创建者自由设置进入密码&#xff0…

如何打造一个网络框架模块对接服务器

一、了解网络框架的基本原理 在开始打造网络框架模块之前,首先需要了解网络框架的基本原理。网络框架是一个软件模块,用于处理网络通信的各种细节,包括数据传输、协议解析、错误处理等。常见的网络框架有HTTP、TCP/IP、WebSocket等。 对啦&…

CSS蒙版效果

CSS蒙版 参考地址 显示效果 想要实现一个CSS蒙版效果达到一下效果 准备的原图如下: 实现起来比较简单,使用到了一个css特性。 mask-image: radial-gradient(white 0%, transparent 70%); mask-repeat: no-repeat; mask-position: center; mask-s…

Android 在自己的项目中接入OpenCV+YOLOv8+NCNN : 实现人像分割

1. 前言 通过前两篇文章 Android 导入ncnn-android-yolov8-seg : 实现人体识别和人像分割 、Android ncnn-android-yolov8-seg源码解析 : 实现人像分割 ,我们已经跑起来了程序,也分析了其源码。 接下来,这篇文章我们来实战一下,抽取出Demo的核心代码,在自己的项目中,使用…

短视频账号矩阵源码saas开发-----

短视频矩阵系统源码开发分享 开发背景: 短视频矩阵系统源码是一款基于PHP语言开发的混剪工具,可以方便地将多个抖音账号的视频素材进行混剪,生成一个新的视频。该工具使用了多线程、协程和异步编程等技术,可以显著提高处理速度&…

Kubernetes革命:云原生时代的应用编排和自动化

文章目录 什么是Kubernetes以及为何它备受欢迎?云原生应用和K8s的关系Kubernetes的核心概念:Pods、Services、ReplicaSets等部署、扩展和管理应用程序的自动化容器编排的演进:Docker到Kubernetes实际用例:企业如何受益于K8s的应用…

美发店微信小程序怎么制作

随着智能手机的普及和移动互联网的发展,越来越多的消费者喜欢通过手机APP或微信小程序来寻找附近的美发店。为了满足消费者的需求,提高品牌知名度和客户满意度,美发店需要制作一款微信小程序,为顾客提供更加便捷、高效、优质的美发…

04训练——基于YOLO V8的自定义数据集训练——在windows环境下使用pycharm做训练-1总体步骤

在上文中,笔者介绍了使用google公司提供的免费GPU资源colab来对大量的自定义数据集进行模型训练。该方法虽然简单好用,但是存在以下几方面的短板问题: 一是需要通过虚拟服务器做为跳板机来访问,总体操作起来非常繁杂。 二是需要将大量的数据上传缓慢,管理和使用非常不友…

力扣第654题 最大二叉树 c++注释版

题目 654. 最大二叉树 中等 相关标签 栈 树 数组 分治 二叉树 单调栈 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地…

曦力音视频转换工具Xilisoft Video Converter Ultimate mac中文版

Xilisoft Video Converter Ultimate mac是一款功能强大的视频转换软件,它可以将几乎所有流行的视频格式转换为其他格式,包括AVI、MPEG、WMV、DivX、MP4、H.264/AVC、AVCHD、MKV、RM、MOV、XviD、3GP等。此外,它还支持将视频转换为音频格式&am…

小谈设计模式(24)—命令模式

小谈设计模式(24)—命令模式 专栏介绍专栏地址专栏介绍 命令模式角色分析命令(Command)具体命令(ConcreteCommand)接收者(Receiver)调用者(Invoker)客户端&am…

遗传算法入门笔记

目录 一、大体实现过程 二、开始我们的进化(具体实现细节) 2.1 先从编码说起 2.1.1 二进制编码法 2.1.2 浮点编码法 2.1.3 符号编码法 2.2 为我们的袋鼠染色体编码 2.3 评价个体的适应度 2.4 射杀一些袋鼠 2.5 遗传--染色体交叉(crossover) 2.6 变异--基…

万万没想到,我用文心一言开发了一个儿童小玩具

最近关注到一年一度的百度世界大会今年将于10月17日在北京首钢园举办,本期大会的主题是“生成未来(PROMPT THE WORLD)”。会上,李彦宏会做主题为「手把手教你做AI原生应用」的演讲,比较期待 Robin 会怎么展示。据说&am…

【后端】韩顺平Java学习笔记(入门篇)

目前准备学后端,java虽然大二上学了但是基本忘没了orz 争取大三卷一点啊啊啊 九月份写的10月份才发orz 中间摆烂了很久,现在目标清晰准备行动了kkk 来源:韩顺平 零基础30天学会Java 目录 I. 简介 一、特点 ✿ 跨平台性 → 运行机制…

GIN框架路由的实现原理

文章目录 首先回顾一下gin框架的路由如何使用的从源码分析一下gin框架gin的路由实现前缀树前缀树的实现压缩前缀树--Radix TrieTrie VS Map 首先回顾一下gin框架的路由如何使用的 package mainimport ("fmt""github.com/gin-gonic/gin""net/http&quo…

使用策略模式重构审批

之前在公司与同时合作开发了一个考核系统,最后干完后整个代码也是合在了我这里,于是进行了codereview,进行优化代码,在审核这边,我先是拆分了公共代码,然后对重复的代码块进行了封装,但是审核这…

Flutter配置Android SDK路径

在使用VSCode作为开发Flutter的工具时,当选择调试设备时,通常看不到android的模拟器,只能看到Chrome之类的。 原因就是Flutter找不到Android的SDK路径,所以无法识别模拟器,我们用flutter doctor命令检查环境时&#xf…