【树-简单】1022. 从根到叶的二进制数之和(两种方法:递归、迭代)

LeetCode 1022. 从根到叶的二进制之和 超详细技术解析(Python) 本文详细解析了LeetCode 1022题"从根到叶的二进制之和"的两种解法:DFS递归和BFS迭代。题目要求计算二叉树所有根到叶路径表示的二进制数之和,其中节点值为0或1。DFS方案通过递归遍历实时计算路径值,代码简洁;BFS方案使用队列避免递归,更稳定通用。两种方法都采用"当前值×2+节点值"的二进制转十进制技巧,时间复杂度O(n)(n为节点数),空间复杂度O(h)(h为树高)。文章包含完整代码、逐行解析和示例验证,适合算法初学者学习二叉树遍历与进制转换的结合应用 阅读详情

【题目】
给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13

对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。

返回这些数字之和。题目数据保证答案是一个 32 位 整数。

示例 1:

输入:root = [1,0,1,0,1,0,1]
输出:22
解释:(100) + (101) + (110) + (111) = 4 + 5 + 6 + 7 = 22

示例 2:

输入:root = [0]
输出:0

示例 3:

输入:root = [1]
输出:1

示例 4:

输入:root = [1,1]
输出:3

提示:

树中的结点数介于 1 和 1000 之间。
Node.val 为 0 或 1 。

【代码】
【方法1-迭代法】
在这里插入图片描述

# 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 sumRootToLeaf(self, root: TreeNode) -> int:
        ans=0
        stack=[]
        prev=None
        while stack or root:
            while root:
                stack.append(root)
                root=root.left
            if not stack[-1].left and not stack[-1].right:
                #将stack数组转换成十进制数字
                s="0b"+"".join([str(x.val) for x in stack])
                ans+=eval(s)
            root=stack.pop()
            if not root.right or root.right==prev:
                prev=root
                root=None
            else:
                stack.append(root)
                root=root.right
        return ans

【方法2-递归法】
在这里插入图片描述

class Solution:
    def sumRootToLeaf(self, root: TreeNode) -> int:
        # 逐层遍历,反向递归
        return self.bin_sum(root, 0)

    def bin_sum(self, root, sum_r):
        if not root:
            return 0
        else:
            sum_r = sum_r * 2 + root.val
            
        if not root.left and not root.right:
            return sum_r
        
        return self.bin_sum(root.left, sum_r) + self.bin_sum(root.right, sum_r)
中国全国地面站点数据(1981-2010)、月平均气象、月平均降水、月平均相对湿度、月最大降水、月最高温度最低温度、月最高温平均值最低温平均值、高低温站点基础数据,气候数据 中国全国地面站点数据(1981-2010)、月平均气象、月平均降水、月平均相对湿度、月最大降水、月最高温度最低温度、月最高温平均值最低温平均值、高低温站点基础数据 b_china_mon_avg_data_pressure月平均气象 b_china_mon_avg_data_rain月平均降水 b_china_mon_avg_data_rhu月平均相对湿度 b_china_mon_max_data_rain月最大降水 b_china_mon_max_min_data_tem月最高温度最低温度 b_china 阅读详情

相关推荐

Revit实战:从零到一,手把手教你用族(Family)搭建一个完整的水闸BIM模型

本文详细介绍了如何使用Revit的族(Family)功能从零开始构建一个完整的水闸BIM模型。通过参数化族设计,实现闸门开度调整自动关联流量计算等智能化功能,提升水利工程BIM模型的工程价值和应用效率。文章涵盖族库规划、核心构件创建、高级技巧及BIM数据深度应用,为水利工程数字化提供实用指南。

weixin_28738165的博客 265

递归和迭代_LeetCode 0404 左叶子之和,递归&迭代,Pair的常用方法

【20200919 每日一题】刷题使我快乐。更多LeetCode答案请见我的GitHub zhangyixing1007/leetcode。今天三个题解已上传至此文件夹。进入正文。先看题目。404. 左叶子之和难度简单计算给定二叉树的所有左叶子之和。示例:3/ 9 20/ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24解法一 单纯dfs递归最直观的想法,当然是递归进行d...

weixin_35794520的博客 158

【从零开始学Skynet】基础篇(一):Skynet环境搭建

Skynet运行于Linux操作系统,我们可以在自己的电脑上搭建虚拟机系统,也可以购买阿里云、腾讯云服务器,笔者这个系列的所有代码都是在Ubuntu16.04版本的虚拟机系统下运行编辑。

我是一条寻水的鱼 3167

算法:左叶子之和

题目: 计算给定二叉树的所有左叶子之和。 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 思路 初始化结果self.res 从根节点开始,深度遍历。遇到左子节点,self.res += node.val 左子节点的判断条件是左边的子节点,且该节点没有子节点。 递归 (这里有个小技巧,递归的时候,给一个code,用来区分左子节点和右子节点) 代码 # Definition for a binary tree

weixin_40925514的博客 322

基于YOLOv8的多类别检测模型融合实战:从数据集重构到模型训练

本文详细介绍了如何将多个单一类别的YOLOv8检测模型融合为一个高效的多类别检测模型。通过重构数据集、利用预训练模型生成新标签,并重新训练,解决了多模型并行带来的速度慢、资源占用高和部署复杂等问题。实战流程涵盖数据准备、标签生成、模型训练与评估,旨在帮助开发者构建性能优异的YOLOv8多类别检测模型。

kmeans3miner的博客 229

意图识别和纠错问题

可想而知,错误的意图识别会带来多大的负面影响。基于词典,就是对用户query内容和词典内容进行比对,比较常见的方式是序列标注问题里用的最大逆向匹配,通过这种方式找到词典里的实体词,匹配触发了自然就有意图了,而在词典匹配的时候,不是使用链表之类的来构造匹配结构,而是使用搜索树的结构,这种匹配的复杂度最低,速度也快,两者结合,其速度甚至比很多模型要快得多(基本上1ms以内就能完成),fasttext速度非常快,但是textcnn之类的其实就已经达到ms级别以上,bert甚至在10ms级别。

TURING.DT 4574

【简单】1022. 从根到叶的二进制数之和(两种迭代+递归)

【题目】 给出一棵二叉树,其上每个结点的值都是 0 或 1 ,每一条从根到叶的路径都代表一个从最高有效位开始的二进制数,例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13,对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字,以 10^9 + 7 为模,返回这些数字之和。 来源:leetcode 链接:https://leetcode-cn.com/problems/sum-of-root-to-leaf-binar

... 247

从零开始开发AI Agent:基于大模型的智能体实战指南

### 摘要 本文介绍了AI Agent的开发全流程,从基础概念到实际部署,涵盖大模型集成、工具调用和记忆系统构建等核心技术。通过电商客服案例展示实战应用,并提供调试优化与部署方案,最后展望了AI Agent的未来发展方向,帮助开发者快速掌握智能体开发技能。

ghs_gss的博客 4868

Leetcode从根到叶的二进制数之和

题目描述 给出一棵二叉树,其上每个结点的值都是0或1。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数01101,也就是13。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。返回这些数字之和。题目数据保证答案是一个 32 位 整数。 示例 1: 输入:root = [1,0,1,0,1,0,1] 输出:22 解释:(100) + (101) + (110)...

码农笔记 196

innovus:像ICC2一样设置placement label

ICC2有placement label/placement rule功能,能控制各种类型cell 之间的spacing规则,包括top和bottom edge的spacing。innovus也有相同的功能,以下示例方便大家了解用法。我们需要给所有OAI* cell之间设置一个spacing rule,让他们不要上下或者挨着。效果如下图,这个spacing指的是同一边的间距,不是cell间距。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 838

下载igv报错:Error loading genome hg38raw.githubusercontent.com...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 993

二叉树必备各种递归算法(求树的结点数,高度,叶子结点...)

1、求二叉树中的节点个数 递归解法: (1)如果二叉树为空,节点个数为0 (2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1 int NodeNum(BTNode * root) { if(root== NULL) // 递归出口 return 0; return NodeNum(root->lchild) + NodeNum(root->rchild) + 1; } 2、求二叉树的深度 递归解法: (1)如果二叉树为空,二叉

weixin_43800761的博客 5万+

R语言中如何获取前向选择(forward selection)选出的变量

前向选择是一种常用的特征选择方法,可以在给定一个预测模型的情况下,逐步添加变量来确定最佳的预测模型。在R语言中,可以使用适当的函数和库来执行前向选择,并获取选出的变量。以下是一个详细的步骤,展示了如何使用R语言执行前向选择并获得选出的变量。通过按照上述步骤,你可以使用R语言执行前向选择,并获取选出的变量。记住,前向选择是一种特征选择方法,可以根据不同的评估指标选择最佳的预测模型。接下来,准备用于前向选择的数据。使用"summary"函数查看前向选择的摘要,并使用"which"函数获取被选中的变量。

WangWEel的博客 924

【刷题】 Leetcode 1022.从根到叶的二进制数之和

本文介绍了1022.从根到叶的二进制数之和的两种解法,深度优先搜索和栈模拟遍历。

叫我龙翔的博客 1709

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python-leetcode-1022. 从根到叶的二进制数之和

可以使用深度优先搜索(DFS)或广度优先搜索(BFS)遍历整棵二叉树,在遍历过程中维护当前路径表示的二进制数,并在到达叶子节点时将其累加到结果中。

Lucy_wzw的博客 743

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【宫水三叶的刷题日记】1022. 从根到叶的二进制数之和

题目描述 这是 LeetCode 上的 1022. 从根到叶的二进制数之和 ,难度为 简单。 Tag : 「DFS」、「BFS」、「二叉树」、「树的遍历」 给出一棵二叉树,其上每个结点的值都是  或  。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。 例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是  。 对树上的每一片叶子,我们都要找出从根

宫水三叶的刷题日记 357

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[LeetCode]1022. 从根到叶的二进制数之和

题目 1022. 从根到叶的二进制数之和 1022. 从根到叶的二进制数之和 给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。 例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。 对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。 返回这些数字之和。题目数据保证答案是一个 32 位 整数。 示例 1: 输入:root = [1,0,1

wat1r的博客 199

LeetCode.1022-根到叶路径二进制数之和(Sum of Root To Leaf Binary Numbers)

这是小川的第381次更新,第410篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第243题(顺位题号是1022)。给定二叉树,每个节点值为0或1.每个根到叶路径表示以最高有效位开始的二进制数。例如,如果路径为0 -> 1 -> 1 -> 0 -> 1,那么这可能表示二进制的01101,即13。 对于树中的所有叶子节点,请考虑从根到该...

weixin_30493321的博客 80

【Leetcode_总结】1022. 从根到叶的二进制数之和 - python

Q: 给出一棵二叉树,其上每个结点的值都是0或1。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数01101,也就是13。 对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。 以10^9 + 7为模,返回这些数字之和。 示例: 输入...

maka_uir的博客 309

2.2基本算法之递归和自调用函数_LeetCode1022: 从根到叶的二进制数之和

题目介绍描述:给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。以 10^9 + 7 为模,返回这些数字之和。输入:[1,0,1,0,1,0,...

weixin_39983384的博客 152

题目:1022.从根到叶的二进制数之和

leetcode 题目:1022.从根到叶的二进制数之和

2301_76145947的博客 87

1022. 从根到叶的二进制数之和 / 剑指 Offer II 066. 单词之和

1022. 从根到叶的二进制数之和 / 剑指 Offer II 066. 单词之和

在彼淇梁的博客 202

【leetcode 1022. 从根到叶的二进制数之和】Python 解题思路

给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。 对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。 以 10^9 + 7 为模,返回这些数字之和。 题目链接: 开心,又实践了一下nonlocal的用法,对于二进制数的操作还是得锻炼熟悉,对于二叉树的递归操作还得加深理解,不然用的时候什么也想不起来.

sinat_32682001的博客 299

leetcode-5.16[1022. 从根到叶的二进制数之和、633. 平方数之和、371. 两整数之和](python实现)

题目1 题解1 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # def sumRootToLeaf(self, root: TreeNode) -> int: # "

leadingme的博客 250

Java&C++题解与拓展——leetcode1022.从根到叶的二进制数之和【么的新知识】

leetcode1022.从根到叶的二进制数之和解题思路,用Java、C++和Rust三种语言分别编写,并对所使用类和方法进行学习记录。

菜鸡成长之路 356

小黑十一假期静待佳音,去哪儿玩呢的leetcode之旅:1022. 从根到叶的二进制数之和(准备去跑步)

静待offer,做最坏的打算

qq_37418807的博客 184
上一篇: 【树-简单】145. 二叉树的后序遍历
下一篇: 【树-简单】112. 路径总和(重点)
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值