代码随想录 Day 16 | 【第六章 二叉树】找树左下角的值、路径总和、从中序与后序遍历序列构造二叉树

离线安装WSL2系统 由于办公环境在内网环境中,需将开发环境部署到内网中。环境:内网:win10。 阅读详情

一、513.找树左下角的值

本题递归偏难,反而迭代简单属于模板题, 两种方法掌握一下

题目链接/文章讲解/视频讲解:代码随想录

1. 整体思路

        本题要求找出该二叉树的 最底层 最左边 节点的值。需要注意的是:

        1)最底层:指深度最大的叶子节点,所以不一定是左子树的叶子节点;

        2)最左边:指最后一层最左边的节点,而不一定是左孩子,左孩子没有那么也可以是右孩子;

        3)无论是前中后序哪一种遍历,都可以使用,因为中为空,所以只需要保证先遍历的是左孩子即可,如果左孩子没有就自然遍历右孩子。

2. 具体步骤

(1)定义一个变量max_depth,用于记录所有遍历里的最大深度,初始化为最小值(负无穷);另一个变量result用于记录所遍历节点里的值,初始化为None

self.max_depth = float('-inf')

知识点:

  • float('inf') 表示正无穷大,比任何有限的浮点数都大。
  • float('-inf') 表示负无穷大,比任何有限的浮点数都小。

float('-inf') 是 Python 中用于表示负无穷(Negative Infinity,即负无穷大的浮点数)的一种方式。它属于浮点数(float)类型的一部分,遵循 IEEE 754 浮点数标准。

详细解释:

  • float('-inf') 的含义:

    • 它表示一个比任何有限的浮点数都小的值,即负无穷大。
    • 在数学上,负无穷大用于表示下界无限延伸的情况。
  • 使用场景:

    • 初始化比较:在需要寻找最小值的算法中,可以初始化一个变量为 float('inf')(正无穷大)或 float('-inf'),然后在遍历数据时更新这个变量。
    • 表示溢出或错误情况:在一些计算中,可能会因为数值过小而超出浮点数的表示范围,此时可以使用负无穷大来表示。

(2)自定义一个回溯函数traversal:

        1)确定传入参数和返回值:传入参数self、node和depth,leetcode定义返回int;其中depth表示当前遍历的节点的深度。

知识点:

self.max_depth 和 self.result:

  • 这是类 Solution 的实例属性,用于在递归遍历树时记录当前的最大深度和对应的最左边值。
  • 使用 self. 确保这些属性在类的不同方法之间共享,并且在同一个实例中保持一致。

        2)终止条件:a.遍历至叶子节点(左孩子和右孩子均为空);b.此时需要进一步判断,目前节点的深度是否是最大深度,即与全局变量max_depth作比较,如果比目前的max_depth大,那么将max_depth更新为depth,并且将这个最大深度值记录进result。

        3)单层递归条件:a.左:为防止操作空指针,需要使用 if 语句进行判断,如果不为空再进行遍历,向左遍历首先深度进行depth++,然后将左孩子传入traversal函数,接下来需要回溯,即depth--。b.右:向右遍历,同向左遍历。

(3)最后主函数调用traversal函数,传入根结点root和depth=0,最后返回result即可。

3. 完整代码

# 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 findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
        self.max_depth = float('-inf') --初始化负无穷最小值
        self.result = None
        self.traversal(root, 0)
        return self.result

    def traversal(self, node, depth):
        if node.left is None and node.right is None:
            if depth > self.max_depth:
                self.max_depth = depth
                self.result = node.val
                return 
        if node.left:
            depth += 1
            self.traversal(node.left,depth)
            depth -= 1
        if node.right:
            depth += 1
            self.traversal(node.right,depth)
            depth -= 1

二、112.路径总和+113.路径总和2

本题 又一次涉及到回溯的过程,而且回溯的过程隐藏的还挺深,建议先看视频来理解

112. 路径总和,和 113. 路径总和ii 一起做了。 优先掌握递归法。

题目链接/文章讲解/视频讲解:代码随想录

1. 112.路径总和

(1)整体思路

        1)没有中节点的处理逻辑,那么采用前中后序遍历都可以。

        2)本题不需要遍历所有节点,只需要找到一条路径就返回到根节点即可。

        3)递归函数的参数传入node和cnt,即节点和目标值,每遇到一个新节点,就用目标值-节点值,一直到cnt等于0,表示这条路径之和满足目标值。

        4)终止条件:遇到叶子节点(左孩子为空且右孩子为空),判断这条路径是否等于目标值(即cnt=0),返回true;如果cnt为0,返回false。

        5)单层递归逻辑:为防止操作空指针,判断是否为空;左孩子值做减法,再向左递归

        6)注意:有递归就有回溯。

(2) 具体步骤

        1)定义一个traversal递归回溯函数,传入参数self、node和cnt,其中node用于遍历节点值,cnt用于目标值与节点值做减法。

        2)确定终止条件:当遍历到叶子节点且cnt=0,说明这条路径所有节点和等于目标值,返回true;如果遍历到叶子节点,但cnt不等于0,则说明这条路径不满足节点和等于目标值,返回false。

        3)遍历左子树:

                a.为防止操作空指针,所以判断如果节点的左子树不为空,才可以进入以下操作;

                b.首先cnt减去当前节点左孩子的值,然后进入递归循环self.traversal(node.left, cnt),要知道这个递归函数必定是有bool返回值的,如果返回为true,说明这个节点的左子树满足条件,所以需要将这个true一直返回给根节点;

                c.最后需要回溯到根节点继续遍历右子树,所以需要cnt加回当前节点左孩子的值。

        4)遍历右子树:同左子树。

        5)如果上述都不满足则返回false。

        6)最后在主函数中判断root是否为空,并调用traversal函数,注意traversal函数传入的cnt等于target - root.val。

(3) 完整代码

# 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 hasPathSum(self, root: Optional[TreeNode], targetSum: int) -> bool:
        if root is None: 
            return False
        return self.traversal(root, targetSum-root.val)

    def traversal(self, node, cnt)->bool:
        if node.left is None and node.right is None and cnt == 0: 
            return True
        if node.left is None and node.right is None: 
            return False

        if node.left:
            cnt -= node.left.val
            if self.traversal(node.left, cnt): 
                return True
            cnt += node.left.val
        if node.right:
            cnt -= node.right.val
            if self.traversal(node.right, cnt): 
                return True
            cnt += node.right.val
        return False

需要特别注意:在写代码过程中具有包含关系的判断条件一定要注意顺序问题!!

 

2. 113.路径总和2

完整代码:

# 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 pathSum(self, root: Optional[TreeNode], targetSum: int) -> List[List[int]]:
        if root is None: 
            return self.result
        self.path.append(root.val)
        self.traversal(root, targetSum -root.val)
        return self.result

    def __init__(self):
        self.path = []
        self.result = []
    def traversal(self, node, cnt):
        if node.left is None and node.right is None and cnt == 0:
            return self.result.append(self.path[:])
        if node.left is None and node.right is None:
            return
        
        if node.left:
            self.path.append(node.left.val)
            cnt -= node.left.val
            self.traversal(node.left, cnt)
            cnt += node.left.val
            self.path.pop()
        if node.right:
            self.path.append(node.right.val)
            cnt -= node.right.val
            self.traversal(node.right, cnt)
            cnt += node.right.val
            self.path.pop()

三、从中序与后序遍历序列构造二叉树

本题算是比较难的二叉树题目了,大家先看视频来理解。

106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的

题目链接/文章讲解/视频讲解:代码随想录

1. 整体思路

(1)后序数组的最后一个元素为根节点,如果整个后序数组为空,说明没有根节点;如果后序数组不为空,那么找到最后一个元素作为根节点。

(2)将根节点作为切割点,将中序数组切分为左右子树两部分。

(3)根据切割后的左右子树,再回到后序数组进行切分。

(4)递归处理左右区间,去子树中进一步构造。

2. 具体步骤

(1)首先判断后序遍历数组是否为空,如果为空,说明根节点不存在,返回None。

(2)如果后序遍历数组不为空,那么最后一个值就是根节点的值,赋给变量root_val,然后定义根节点,将root_val赋给根节点。

(3)在后序遍历数组中找到了根节点,以根节点在中序遍历数组中确定划分点,找到划分点的下标index。

(4)对中序遍历数组进行切割,划分为左子树和右子树,左子树就是从数组开头到划分点,右子树就是从划分点到数组末尾,数组区间是左闭右开。

(5)得到了左右子树的数组长度,在后序遍历数组中进行划分,由于后序遍历数组的顺序是左右中,所以左子树的划分就是从数组开头到中序遍历左子树的长度,右子树的划分就是从中序遍历数组长度到后序遍历数组长度-1,因为最后一位是根节点。

(6)进行递归遍历,对左右子树的下一层递归。

(7)最后返回根节点即可。

3. 完整代码 

105.

# 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 buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
        if not preorder: 
            return None

        root_val = preorder[0]
        root = TreeNode(root_val)
        separator_index = inorder.index(root_val)

        inorder_left = inorder[:separator_index]
        inorder_right = inorder[separator_index+1:]

        preorder_left = preorder[1:len(inorder_left)+1]
        preorder_right = preorder[len(inorder_left)+1:len(preorder)]

        root.left = self.buildTree(preorder_left,inorder_left)
        root.right = self.buildTree(preorder_right,inorder_right)

        return root
        

106.

# 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 buildTree(self, inorder: List[int], postorder: List[int]) -> Optional[TreeNode]:
        if not postorder:
            return None
        root_val = postorder[-1]
        root = TreeNode(root_val)
        
        separator_index = inorder.index(root_val)

        inorder_left = inorder[:separator_index]
        inorder_right = inorder[separator_index+1:]

        postorder_left = postorder[:len(inorder_left)]
        postorder_right = postorder[len(inorder_left):len(postorder)-1]

        root.left = self.buildTree(inorder_left, postorder_left)
        root.right = self.buildTree(inorder_right, postorder_right)

        return root

注意:

  • if postorder is None:

    • 仅检查 postorder 是否严格为 None。
    • 不涵盖 postorder 为空列表 [] 的情况。
  • if not root:

    • 检查 root 是否为“假值”,包括 None、False、0、空列表 [] 等。
    • 更加广泛,用于判断变量是否存在有效值。

(1)错误代码块如下:

  • 仅检查了 postorder 是否为 None,但实际上,即使 postorder 是一个空列表 [],postorder[-1] 依然会导致错误。
  • 修正:不仅要检查 postorder 是否为 None,还要检查它是否为空。
if root is None:
    return None

(2)正确代码块:

if not root:
    return None

零差云控 ZeroErr eRob 电机 CAN、CANopen、EtherCAT、ROS2 机器人开发详细教程 TwinCAT 3(Windows 控制与自动化技术)是 Beckhoff 提供的开发平台,可将任何兼容 PC 转变为实时控制系统,用于管理各种类型的工业自动化系统,如 PLC(可编程逻辑控制器)、运动控制、机器人等。 阅读详情

相关推荐

AI大模型API中转站选型指南:12项关键指标与实战评估

随着AI大模型技术的快速迭代,企业面临着一个核心挑战:如何在基础模型频繁更新的背景下,为业务系统选择稳定可靠的API中转服务?本文基于真实生产环境测试数据,从12个关键维度系统评估主流API中转站平台,帮助技术团队在模型快速演进的生态中做出科学选型决策。 1. API中转站的核心价值与业务场景 1.1 什么是API中转站 API中转站(API Gateway/Aggregator)是连接业务系统与多个大模型厂商的中间层服务。它通过统一的接口封装了不同厂商的API协议差异,为企业提供标准化的模型调用能力。在实

weixin_29056101的博客 445

代码随想录算法训练营day16(python版)|第六章 二叉树 part04|513.找树左下角的值·路径总和·从中序与后序遍历序列构造二叉树

513.找树左下角的值本题递归偏难,反而迭代简单属于模板题, 两种方法掌握一下普通变量:递归中每次都是新的一份self.xxx:递归中所有调用共用一份定义一个全局变量max_depth记录当前遍历到的最大深度,ans保存对应的节点值。从根节点开始递归,记录当前节点的深度。当第一次到达某个更深的深度时,更新max_depth和ans。先递归左子树,再递归右子树,保证第一次到达这一层的节点是最左的。遍历完成后,ans就是答案。用队列保存当前层的所有节点。

qq_43752779的博客 672

避坑指南:LAMMPS做GCMC模拟时,化学势mu和压力p到底怎么设?

本文详细解析了LAMMPS中巨正则蒙特卡洛(GCMC)模拟的关键参数设置,特别是化学势(mu)与压力(p)的正确计算方法。通过理论分析、实用公式和黄金法则,帮助用户避免常见误区,提升模拟精度和效率,适用于各类复杂体系的分子模拟研究。

weixin_42525289的博客 429

算法训练营day18(二叉树05:找左下角的值,路径总和,中后序构建二叉树)

/找到中节点对应的inorder坐标。//前中后序遍历都行,因为不操作当前节点,左在右前面即可。//迭代法,层序遍历。说实话递归没搞明白return怎么回事。半懂不懂有点消化不过来。

weixin_61931006的博客 1199

ENVI 5.6保姆级教程:高分七号DLC影像从打开到融合的完整流程(附避坑指南)

本文详细介绍了ENVI 5.6处理高分七号DLC影像的完整流程,包括环境准备、数据解压、正射校正、图像融合等关键步骤。特别针对国产卫星数据处理的独特挑战,提供了实用的避坑指南和优化技巧,帮助用户高效完成光学影像的预处理和质量提升。

weixin_33269743的博客 382

SVN使用:使用TortoiseSVN遇到提示请执行“清理”命令的解决方法

作为程序员来说,在团队开发过程中关于代码管理的工具使用并不陌生,比较常用的代码合并管理工具如:Git、SVN等,虽然相关工具的使用并不复杂,但是还是要掌握常用的使用方法,尤其是相关的第三方软件的使用也是极为重要的,而且有时候使用这些三方软件来进行代码管理的时候也会遇到一些问题。本篇博文就来分享一下在SVN使用的时候使用TortoiseSVN遇到提示请执行“清理”命令的解决方法,方便查阅使用。

全沾软贱开发攻城狮 1万+

代码随想录 day 16 二叉树

使用层序遍历,从后向前遍历,依次更新最左,就是判断当前层的每一个节点是不是左右节点都是null,如果是它就可能是最左,从上到下,从右到左 依次更新即可。106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的。本题 又一次涉及到回溯的过程,而且回溯的过程隐藏的还挺深,建议先看视频来理解。本题递归偏难,反而迭代简单属于模板题, 两种方法掌握一下。本题算是比较难的二叉树题目了,大家先看视频来理解。计算每条路径,记录完一条回溯在记录另一条路径。前序遍历 + 回溯处理。

weixin_45549711的博客 1096

基于STM32L4XX、HAL库的AP6275S WIFI 模块驱动程序设计

支持802.11a/b/g/n/ac/ax (Wi-Fi 6)标准。// 这部分通常依赖于Broadcom提供的固件和驱动。// 这里需要添加Wi-Fi固件加载和初始化的代码。// 通常需要通过SDIO发送命令和接收响应。// 这里需要添加蓝牙HCI初始化代码。// 处理Wi-Fi和蓝牙数据。// 这里需要实现Wi-Fi连接逻辑。// 初始化SDIO和UART。// 确保蓝牙使能引脚已设置。// 关闭Wi-Fi和蓝牙。// 关闭Wi-Fi和蓝牙。// 打开Wi-Fi和蓝牙。// 初始化AP6275S。

zhusl6688的博客 277

代码随想录-算法训练营day18【二叉树05:找树左下角的值、路径总和、从中序与后序遍历序列构造二叉树】

代码随想录-算法训练营day18【二叉树05:找树左下角的值、路径总和、从中序与后序遍历序列构造二叉树】

upward 554

AUTOSAR AP——SM模块

对AUTOSAR AP中状态管理模块SM,从模块定义、总结等多方面进行了介绍。

weixin_43627682的博客 284

30、电力生产系统中的效率测量

本文探讨了如何使用数据包络分析(DEA)模型来评估电力生产系统的效率。文章详细介绍了电力生产系统的三个主要环节——发电、输电和配电,并通过多种DEA模型,如输入导向模型、输出导向模型以及基于松弛的SBM模型,展示了效率测量的方法和技术。同时,结合实际案例分析,说明了DEA模型在识别效率低下环节及提出改进建议方面的应用价值。

rgv2345678的博客 116

第六章 day16 二叉树part04

106.从中序与后序遍历序列构造二叉树。

m0_72789504的博客 702

【100%通过率】华为od 机试真题 C语言 实现【补种未成活胡杨】

近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1-N),排成一排。一个月后,有M棵胡杨未能成活。现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树?

MISAYAONE的博客 1654

代码随想录 day16 二叉树 part04

本题递归偏难,反而迭代简单属于模板题, 两种方法掌握一下。

2401_88561446的博客 228

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

算法训练营DAY16 第六章 二叉树 part04

递归函数是有返回值的,如果递归函数返回true,说明找到了合适的路径,应该立刻返回。递归方法采用前序遍历,但要注意需要回溯,(返回上一层时,深度减一)保证优先左边搜索,然后记录深度最大的叶子节点,此时就是树的最后一行最左边的值。本题还需要类里的两个全局变量,maxDepth用来记录最大深度,res记录最大深度最左节点的数值。左/右儿子放入当前路径,差值更新,递归下一个,差值回溯,当前路径回溯;遇到叶子节点时,统计最大深度,如果深度够大,记录叶子节点val。参数包括根节点,count记录路径和与目标的差值;

2401_89133587的博客 419

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

day16 第六章 二叉树 part04

找树左下角的值前序法层序路径总和。

mvufi的博客 301

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

代码随想录算法训练营DAY16第六章 二叉树part04

【代码】代码随想录算法训练营DAY16第六章 二叉树part04。

2401_88089822的博客 44

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

weixin_44218929的博客 187

pandas 深度入门:从数据结构到一份真实销售报表

本文系统讲解Pandas核心应用,从三分钟安装到完整月度报表生成,涵盖数据读取、清洗、筛选、分组聚合、表连接、透视表与时间序列等13个关键环节。强调“先看数据再动手”,掌握Series/DataFrame/Index结构本质,熟练运用loc/iloc、merge校验、agg/transform区别,通过真实案例实现高效报表自动化,告别手动Excel操作。最后提供性能优化与高频报错解决方案,助力读者快速上手,真正实现“写二十行代码,跑三秒出结果”。

信息安全领域优质创作者|操作系统领域专家 281

数据结构的基本概念和算法的初步认识

本文系统阐述数据结构与算法的基础概念,涵盖数据、数据元素、数据对象的层次关系,数据结构的三要素(逻辑结构、存储结构、数据运算),以及抽象数据类型。重点解析算法的特性与设计要求,并深入讲解时间复杂度分析的核心——大O表示法,通过“只保留最高阶项、忽略常数系数、取最坏情况”三大原则,结合实例剖析O(1)、O(n)等常见时间复杂度,揭示算法效率的本质评估方法。

ACH_YYX的博客 188

数据结构:9.Map和Set

有的讲解会说这里key是标识作用,这种说法其实没有太大意义,就算知道了他是标识value的作用又如何,在实际的使用过程中,我们只会根据具体的效果选择使用的方法等,不会执着于“标识”这种说法。2.由于哈希函数的设计原则太过理论,它仅仅是在认为:这些通过关键码算出来的index不同 的情况下设计的,然而这种理论化的设计原则在遇到冲突时,恰恰就出现了问题,而我们能做的,就是降低冲突率。虽然哈希表的使用过程中存在冲突,但是在实际的使用过程中,哈希表的冲突率是不高的,冲突的个数是可控的。

2602_95646088的博客 201

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 343

排序算法深度笔记(上):比较类排序的思想演进与代码实现

与。本文聚焦前者 —— 也就是通过元素间两两比较来确定相对顺序的排序算法,从最朴素的 O (n²) 基础排序,到工业级主流的 O (nlogn) 进阶排序,逐层拆解设计思想、带注释的代码实现与边界细节。当我们理解了比较排序的性能边界,也就自然引出了非比较排序的存在意义。所有代码均遵循统一的实现规范:入口函数前置空数组与单元素边界校验,基于数组原地修改,主函数附带可直接运行的测试用例,与练习代码风格完全对齐。

2401_87069538的博客 611

CF2283F[数据结构]

首先考虑一种暴力解法,当我们建好i之前的图后,当我们添加i的时候,区间[li,ri]中的点都会向i建边,但是这些点中,如果有某两个顶点l,r,满足l<r,那么l就可以通过r间接到达i,因此可以删除l到i的边;初始时我们令所有点放入set中,然后对于每一个i的处理,我们将集合中仍在[l,r]的范围的点弹出,并且将f设置为i,这样我们就得到了所有点的最小跳板;对于每个区间[l,r] 我们要计算这下下标中的f(v)中大于r的数目有多少个;我们令f(v)表示顶点v可到达的最小的顶点;

蒟蒻 138

笔记-论数据结构2

typedef 数据类型 别名return 0;typedef也经常用在结构体上:每次声明结构体变量都要写struct关键字,很麻烦,而且逻辑上也很难受,typedef可以解决这个问题。int x;int y;p.x = 5;p.y = 10;return 0;而利用typedef解决有两种解法:typedef struct 结构体名数据类型 变量名;数据类型 变量名;……}别名;数据类型 变量名;数据类型 变量名;……}别名;实际的运用int x;

fish_zzzz的博客 111

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 85
上一篇: 代码随想录 Day 15 | 【第六章 二叉树】110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和、222.完全二叉树的节点个数
下一篇: 代码随想录 Day 17 | 【第六章 二叉树 part05】654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
Accept17
博客等级 码龄4年 479粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值