刷题记录|Day18 ● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

【代码随想录训练营】【Day18】第六章|二叉树|513.找树左下角的值|112. 路径总和|113.路径总和ii|105.从前序与中序遍历序列构造二叉树|106.从中序与后序遍历序列构造二叉树 阅读详情

● 513.找树左下角的值

题目描述

假设二叉树中至少有一个节点。

示例 1:

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

示例 2:

输入: [1,2,3,4,null,5,6,null,null,7]
输出: 7

提示:

  • 二叉树的节点个数的范围是 [1,10<sup>4</sup>]
  • -2<sup>31</sup> <= Node.val <= 2<sup>31</sup> - 1

解题思路

层序遍历 (广域搜索算法)

这里注意加入队列的是先加入右子树,然后加入左子树

class Solution {
public:
    int findBottomLeftValue(TreeNode* root) {
        queue<TreeNode*> que;
        if(root)que.push(root);
        
        int ans = INT_MIN;

        while(!que.empty())
        {
            

            int size = que.size();

            for(int i = 0; i< size; ++i)
            {
                TreeNode * node = que.front();
                que.pop();
                
                if(node->right)que.push(node->right);
                if(node->left)que.push(node->left);
                
                ans = node->val;           
            }
        }
        return ans;

    }
};

递归

使用递归法,如何判断是最后一行呢,其实就是深度最大的叶子节点一定是最后一行。
前序:中左右
中序:左中右
后序:左右中
只要我们优先遍历左节点,
我们求的是最后一行的最左边的元素,而不是左孩子
递归三部曲:

确定递归函数的参数和返回值
int maxDepth = INT_MIN;   // 全局变量 记录最大深度
int result;       // 全局变量 最大深度最左节点的数值
void traversal(TreeNode* root, int depth)
确定终止条件;
if(node->left == nullptr && node->right == nullptr )
        {
            if(depth>maxDeep)
            {
                maxDeep =depth;
                result = node->val;
            }
        }
return         
单次递归的逻辑

depth++后在depth- -??
向左遍历,depth++ 回溯
?为何要回溯

在这里插入图片描述

if(node->left){
            depth++;
            traversal(node->left,depth);
            depth--;
        }
        if(node->right)
        {
            depth++;
            traversal(node->right,depth);
            depth--;
        }

 
代码整合
class Solution {
public:
    int maxDeep = INT_MIN;
    int result;

    void traversal(TreeNode * node , int depth)

    {
        if(node->left == nullptr && node->right == nullptr )
        {
            if(depth>maxDeep)
            {
                maxDeep =depth;
                result = node->val;
            }
        }
        if(node->left){
            depth++;
            traversal(node->left,depth);
            depth--;
        }
        if(node->right)
        {
            depth++;
            traversal(node->right,depth);
            depth--;
        }
        return;


    }
    int findBottomLeftValue(TreeNode* root) {
        traversal(root,result);
        return result;
    }
};

● 112. 路径总和

题目描述

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

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

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true
解释:等于目标和的根节点到叶节点路径如上图所示。

示例 2:

输入:root = [1,2,3], targetSum = 5
输出:false
解释:树中存在两条根节点到叶子节点的路径:
(1 --> 2): 和为 3
(1 --> 3): 和为 4
不存在 sum = 5 的根节点到叶子节点的路径。

示例 3:

输入:root = [], targetSum = 0
输出:false
解释:由于树是空的,所以不存在根节点到叶子节点的路径。

提示:

  • 树中节点的数目在范围 [0, 5000] 内
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

解题思路

递归三部曲

确定递归函数的参数和返回类型
bool mysum(TreeNode* node, int targetSum)
确定终止条件
if(node!=nullptr&&node->left==nullptr&& node->right==nullptr)
        {
            if(targetSum == 0)
                return true;
            else 
                return false;
        }
确定单次循环的逻辑
if(node&&node->left)
        {
            if(mysum(node->left,targetSum-node->left->val))
                return true;
            

        }
        if(node&&node->right)
        {
            if(mysum(node->right,targetSum-node->right->val))
            {
                return true;
            }
        }
总体代码整合

class Solution {
public:

    bool mysum(TreeNode* node, int targetSum)
    {
        if(node!=nullptr&&node->left==nullptr&& node->right==nullptr)
        {
            if(targetSum == 0)
                return true;
            else 
                return false;
        }
        if(node&&node->left)
        {
            if(mysum(node->left,targetSum-node->left->val))
                return true;
            

        }
        if(node&&node->right)
        {
            if(mysum(node->right,targetSum-node->right->val))
            {
                return true;
            }
        }
        return false;
    }

    bool hasPathSum(TreeNode* root, int targetSum) {

        if(root) return mysum(root, targetSum-root->val);
        return false;



    }
};

113.路径总和ii

题目描述

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

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

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
输出:[[5,4,11,2],[5,8,4,5]]

示例 2:

输入:root = [1,2,3], targetSum = 5
输出:[]

示例 3:

输入:root = [1,2], targetSum = 0
输出:[]

提示:

  • 树中节点总数在范围 [0, 5000] 内
  • -1000 <= Node.val <= 1000
  • -1000 <= targetSum <= 1000

解题思路

class Solution {
public:

    bool mysum(TreeNode* node, int targetSum)
    {
        if(node!=nullptr&&node->left==nullptr&& node->right==nullptr)
        {
            if(targetSum == 0)
                return true;
            else 
                return false;
        }
        if(node&&node->left)
        {
            if(mysum(node->left,targetSum-node->left->val))
                return true;
            

        }
        if(node&&node->right)
        {
            if(mysum(node->right,targetSum-node->right->val))
            {
                return true;
            }
        }
        return false;
    }

    bool hasPathSum(TreeNode* root, int targetSum) {

        if(root) return mysum(root, targetSum-root->val);
        return false;



    }
};

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

题目描述

给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。
​
示例 1:
​

​

输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]
输出:[3,9,20,null,null,15,7]
​

​
示例 2:
​

输入:inorder = [-1], postorder = [-1]
输出:[-1]
​

​
提示:
​

  • 1 <= inorder.length <= 3000
  • postorder.length == inorder.length
  • -3000 <= inorder[i], postorder[i] <= 3000
  • inorder 和 postorder 都由 不同 的值组成
  • postorder 中每一个值都在 inorder 中
  • inorder 保证是树的中序遍历
  • postorder 保证是树的后序遍历

解题思路

在这里插入图片描述

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
     
    TreeNode * traversal(vector<int> & inorder, vector<int>& postorder)
    {
        if(postorder.size()==0) return nullptr;
        int rootval = postorder[postorder.size()-1];
        TreeNode* root  = new TreeNode(rootval);
        if(postorder.size() == 1 )return root;

        int index = 0;
        
        for(index;index<inorder.size();index++)
        {
            if(inorder[index]==rootval)break;
            
        }


        //切割中序数组 切割为左中序数组,右中序数组
        vector<int> leftmid(inorder.begin(),inorder.begin()+index);

        vector<int> rightmid(inorder.begin()+index+1,inorder.end());

        // postorder.resize(postorder.size() - 1);


        //切后序数组,左后序数组,右后序数组

        vector<int> leftpost(postorder.begin(),postorder.begin()+leftmid.size());

        vector<int> rightpost(postorder.begin()+leftmid.size(),postorder.begin()+leftmid.size()+rightmid.size());


        root->left = traversal(leftmid, leftpost);
        root->right = traversal(rightmid, rightpost);
        return root;

    }
    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {

        if (inorder.size() == 0 || postorder.size() == 0) return NULL;

        // 参数坚持左闭右开的原则
        return traversal(inorder, postorder);


    }
};

105.从前序与中序遍历序列构造二叉树

题目描述

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

示例 1:

输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
输出: [3,9,20,null,null,15,7]

示例 2:

输入: preorder = [-1], inorder = [-1]
输出: [-1]

提示:

  • 1 <= preorder.length <= 3000
  • inorder.length == preorder.length
  • -3000 <= preorder[i], inorder[i] <= 3000
  • preorder 和 inorder 均 无重复 元素
  • inorder 均出现在 preorder
  • preorder 保证 为二叉树的前序遍历序列
  • inorder 保证 为二叉树的中序遍历序列

解题思路

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {


public:

    TreeNode * traversal(vector<int>& preorder, vector<int>& inorder)
    {
        if(preorder.size() == 0) return nullptr;
        int rootval = preorder[0];
        TreeNode *root = new TreeNode(rootval);
        if(preorder.size()==1)return root;

        int index=0;
        for(; index<inorder.size();++index)
        {
            if(inorder[index]==rootval)
            break;
        }



        /// leftmid rightmid
        vector<int> leftmid(inorder.begin(),inorder.begin()+index);
        vector<int> rightmid(inorder.begin()+index+1,inorder.end());

        //preleft, preright
        vector<int> preleft(preorder.begin()+1,preorder.begin()+1+leftmid.size());

        vector<int> preright(preorder.begin()+1+leftmid.size(),preorder.end());

        // cout << "----------" << endl;

        // cout<<"index  "<<index<<endl;
        // cout<<"rootval  "<<rootval<<endl;
        // cout<<"preright"<<endl;
        // for(int i: preright)
        // {
        //     cout<<i<<" ";
        // }
        // cout<<endl;

        // cout<<"midright"<<endl;

        // for(int i : rightmid)
        //     cout<<i;
        // cout<<endl;





        root->left = traversal(preleft,leftmid);
        root->right = traversal(preright,rightmid);
        return root;
    }
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
          if (inorder.size() == 0 || preorder.size() == 0) return NULL;
          return  traversal(preorder,inorder);


    }
};
易灵思FPGA-软件Efinity和Modelsim联仿设置 文章目录前言一、modelsim破解过程二、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智 阅读详情

相关推荐

从ORCAP-1589警告看Cadence ORCAD的DRC设置:如何避免‘网络别名’引发的潜在短路风险

本文深入解析Cadence ORCAD中ORCAP-1589警告的深层含义,探讨网络别名可能引发的短路风险及DRC设置优化方案。通过分析网络别名的设计意图、DRC规则配置及最佳实践,帮助工程师有效规避设计风险,提升电路设计的可靠性和规范性。

weixin_34194829的博客 297

【力扣一刷】代码随想录day18 ( 513.找树左下角的值、112. 路径总和、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树 )

利用HashMap加快索引查询,key为节点的val,value为节点在中序遍历数组的索引值。传入中序和后序遍历数组的开始索引和结束索引,不需要额外的数组存储。* }* }*/// 创建哈希表,加速根节点val值的索引查找i++){// 1、确定参数和返回值,参数传入区间和索引,要求索引对应左闭右开原则,返回二叉树的根节点// 2、确定终止条件(原则是左闭右开,如果开始和结束相等,则证明区间为空,返回null)// 3、确定单层递归逻辑。

weixin_46135891的博客 2256

WRF移动嵌套结合伏羲模型与CFD(PALM)高精度多尺度降尺度分析研究

WRF移动嵌套(Moving Nesting):动态调整高分辨率嵌套网格位置,追踪天气系统(如台风、强对流系统)以提高局地预报精度。伏羲(Fuxi)模型:国产数值模式,提供对WRF模拟的初始及边界条件优化。CFD(Computational Fluid Dynamics)PALM模型:精细化局地流场、湍流、温度分布。

m0_57411304的博客 1716

代码随想录算法训练营Day18 | 513.找树左下角的值、112. 路径总和(以及113.)、106.从中序与后序遍历序列构造二叉树(以及105.) | Python | 个人记录向

二叉树:513.找树左下角的值、112. 路径总和、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树。

Python基本算法 1628

使用Dify打造视频生成工作流:从提示词到视频的完整指南

Dify作为开源LLM应用开发平台,通过可视化工作流编排实现从文本到视频的端到端生成,将创意周期从天级缩短至分钟级。核心流程包括提示词工程、视频API调用、存储分发和结果反馈。

牛奶夹心巧克力 3435

使用Dify搭建音频文件转文本工作流

使用Dify搭建音频文件转文本工作流

zyx_bx的博客 5623

【代码随想录算法训练营Day18】● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍

优化思路:只定义一个int类型的res,for循环的第一个数就赋给res即可。用层序遍历,把每层第一个数加入一个新栈,返回栈顶即可。同113,只是返回值变为true和false。思路:找深度最大的叶子节点最左侧的节点。是否为0来确定是否是一条正确的路径。走到叶子节点通过判断。

Tammy2001的博客 873

k8s架构、工作流程、集群组件详解

Kubernetes(简称K8s,是因为 k 和 s 之间有八个字符)是一个开源的容器编排平台,用于管理云平台中多个主机上的容器化应用程序。它提供了一种机制,用于自动化部署、扩展和管理容器化应用程序的集群。Kubernetes的目标是让部署容器化应用程序变得简单高效。它提供了应用程序部署、规划、更新和维护的基本机制,同时具备强大的扩展性和可靠性。Kubernetes采用主从设备模型(Master-Slave架构),其中Master节点负责核心的调度、管理和运维任务,而Slave节点负责运行应用程序的容器。

qq_51545656的博客 4382

代码随想录算法训练营 Day 18|513.找树左下角的值, 112. 路径总和, 113.路径总和ii, 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

自己的思路基本上想到了递归的顺序,想到了回溯的过程,甚至想到了直接用给定值减去遍历的节点,只是对于返回值的处理还需要整理。因为本题只要有一个答案就可以返回True,因此不需要遍历全部的二叉树,所以遇到满足条件的,直接返回True就行。此外,需要了解递归过程中的首尾值的处理,这里的单层递归逻辑中,没有处理到根节点,需要在一开始处理。

Jiahui_0020的博客 1103

《手把手教你YOLOv9实战》,改进专栏目录

为了提供友好的操作效果,本专栏将会手把手搭建可视化界面,我将用PyQt5 搭建一个可视化界面,可视化界面能够实现基本的图像加载与检测功能,如支持视频、摄像头,还支持更换不同的 YOLOv9 模型,并适应不同领域(如口罩检测系统、人脸检测系统、工业缺陷检测系统等),界面灵活、功能强大。通过YOLOv9加以改进设计,形成新的算法框架,一起水科研和论文,专栏会一直持续更新中,本专栏适合目标检测、分割、分类。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2157

2025年GESP12月认证C++一级真题解析

摘要 本文包含13道C++编程选择题,每题2分,涉及语法、运算符、循环、条件判断等知识点。题目考察了变量命名规则、运算符优先级、赋值语句、循环控制、格式化输出等内容。部分题目解析与标答存在差异,例如第4题逗号表达式输出应为5但标答为4,第6题赋值运算结果应为4 4但标答为3 4等。这些题目适合用于检验基础编程能力,但需注意部分标答可能存在争议,建议结合具体编译环境验证。最后一题考察"漂亮数"判断,要求填写数字某位能被3整除的条件表达式。

lan_in的博客 752

代码随想录算法训练营DAY18|C++二叉树Part.5|513.找树左下角的值、112. 路径总和、113.路径总和II、106\105.从中(前)序与后(中)序遍历序列构造二叉树

所以左下角的值完全可能在右子树。

糖炒栗子 972

C# 实现 Modbus 通信全教程(支持 TCP 和 RTU,含完整错误处理)

环境准备:安装 NModbus4 库,明确设备参数(IP/串口、地址、数据类型);连接设备:TCP 用 TcpClient,RTU 用 SerialPort,注意超时和参数匹配;读写数据:根据数据类型调用对应方法(读保持寄存器用 ReadHoldingRegisters);错误处理:捕获连接、超时、协议等异常,针对性排查问题。掌握这些后,即可轻松实现与工业设备的 Modbus 通信,为上位机开发提供稳定的数据交互能力。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2068

代码随想录算法训练营三刷day 18| 二叉树之 513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

baimaozi_007的博客 878

jre9下载 jdk9

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

假人有限元模型

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

代码随想录一刷(day18) |513.找树左下角的值|112. 路径总和i|113.路径总和ii|106.从中序与后序遍历序列构造二叉树|105.从前序与中序遍历序列构造二叉树

相对于递归法来说,本题更适合使用层序遍历的方法。如果使用递归法将涉及到回溯。要明确递归返回的条件,当targetSum==0且遍历至于叶子节点时返回true,并且会往回递归使targetSum变为上一个节点中targetSum的值,然后再继续遍历其他路径。【本题建议在递归函数内判断完root是否为空后就将targetSum-=root.val,后面再进行叶子节点的判断,这样可以避免漏掉根节点】

qq_73918567的博客 981

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

代码随想录算法训练营day18||二叉树part05、513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构

递归求深度的写法,我们在110.平衡二叉树 (opens new window)中详细的分析了深度应该怎么求,高度应该怎么求。递归中其实隐藏了回溯,在257. 二叉树的所有路径 (opens new window)中讲解了究竟哪里使用了回溯,哪里隐藏了回溯。层次遍历,在二叉树:层序遍历登场!深度讲解了二叉树层次遍历。所以本题涉及到的点,我们之前都讲解过,这些知识点需要同学们灵活运用,这样就举一反三了。

qq_40222433的博客 767

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

刷题DAY18 | 513-找树左下角的值 112-路径总和 113-路径总和ii 106-从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

那么如何找最左边的呢?可以使用前序遍历(当然中序,后序都可以,因为本题没有 中间节点的处理逻辑,只要左优先就行),保证优先左边搜索,然后记录深度最大的叶子节点,此时就是树的最后一行最左边的值。此时应该发现了,如上的代码性能并不好,因为每层递归定义了新的vector(就是数组),既耗时又耗空间,但上面的代码是最好理解的,为了方便读者理解,所以用如上的代码来讲解。中序数组我们都切成了左中序数组和右中序数组了,那么后序数组就可以按照左中序数组的大小来切割,切成左后序数组和右后序数组。所以要找深度最大的叶子节点。

wangs29的博客 893

代码随想录算法训练营Day 18|LeetCode513找树左下角的值、112 路径总和、113 路径总和II、106 从中序与后序遍历序列构造二叉树、105 从前序与中序遍历序列构造二叉树

同时到了叶子节点的话,说明找到了目标和。该题找到一个符合条件的路径即可,所以需要bool返回值,终止条件:让计数器。第⼆步:如果不为空,那么取后序数组最后⼀个元素作为节点元素。第三步:找到后序数组最后⼀个元素在中序数组的位置,作为切割点。第四步:切割中序数组,切成中序左数组和中序右数组。第五步:切割后序数组,切成后序左数组和后序右数组。第⼀步:如果数组大小为零的话,说明是空节点了。时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(n)

qq_52807368的博客 1869

Day 18 513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

而且由于这道题的要求是返回左下角的值,所以只需要满足左子树优先遍历即可,那么前序中序后序都可以,保证优先左边搜索,然后记录深度最大的叶子节点,此时就是树的最后一行最左边的值;​ 由于题目要求得到的是最后一行的最左边的元素,则不能简单的一直向左遍历;给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。​ 很简单,层序遍历,返回含有路径数组元素的数组;

qq_46025584的博客 831

Day18 代码随想录 二叉树 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

在while之后紧跟着就是size在for循环中会使用到,层序遍历中需要用到for循环,是因为我们需要确定每一层的元素有多少个,确保每次都是将一行的元素输出出去,在原本的层序遍历问题中是因为需要按层来保存元素,在现在的问题中是因为需要按行输入输出到vector中。同时在有一条路径成立的时候,依然进行return,这样使得可以继续。2. vector(vec[0], vec[5]),vector容器中是包含vec[0],vec[1],vec[2],vec[3],vec[4],是不包含最后一个vec[5]。

weixin_61057535的博客 763

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

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

weixin_61931006的博客 1199

代码随想录算法训练营Day18|Leetcode513找树左下角的值、112路径总和、113路径总和ii、106从中序与后序遍历序列构造二叉树、105从前序与中序遍历序列构造二叉树

Day18打卡!今日感想:今天重点是学习构造二叉树,以及学习如何添加日志调代码。勤思考多动手~

m0_60979177的博客 1171

代码随想录算法训练营第day18|513.找树左下角的值、 112. 路径总和 113.路径总和ii、106.从中序与后序遍历序列构造二叉树 、105.从前序与中序遍历序列构造二叉树

思路:后序遍历结果数组中,从后往前,分别是数的根节点,由于遍历的是同一棵树,所以后续遍历的根节点,在中序结果数组中,恰好把两边切成其左右孩子数组两部分,一路切割下去,就能唯一确定一棵树;给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)说明: 叶子节点是指没有子节点的节点。

qq_60513199的博客 979

刷题记录Day18-二叉树(找树左下角的值、路径总和、从中序与后序遍历序列构造二叉树)

二叉树

qq_41645729的博客 677

算法训练Day18:513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

513.找树左下角的值 112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树

qq_45865950的博客 1227

【LeetCode题目详解】第六章 二叉树 part05 513.找树左下角的值 112. 路径总和113.路径总和ii106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍(day18补)

递归求深度的写法,我们在110.平衡二叉树中详细的分析了深度应该怎么求,高度应该怎么求。递归中其实隐藏了回溯,在257. 二叉树的所有路径中讲解了究竟哪里使用了回溯,哪里隐藏了回溯。层次遍历,在二叉树:层序遍历登场!深度讲解了二叉树层次遍历。所以本题涉及到的点,我们之前都讲解过,这些知识点需要同学们灵活运用,这样就举一反三了。本篇通过leetcode上112. 路径总和 和 113. 路径总和ii 详细的讲解了 递归函数什么时候需要返回值,什么不需要返回值。

weixin_67972246的博客 987
上一篇: 牛客 Day1 Socket介绍
下一篇: ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树
null_one
博客等级 码龄8年 847粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值