二叉树进阶学习——从前序和中序遍历序列构造二叉树
1.题目解析
题目来源:105.从前序与中序遍历序列构造二叉树——力扣

测试用例


2.算法原理
首先要了解一个概念
前序遍历:按照 根节点->左子树->右子树的顺序遍历二叉树
中序遍历:按照 左子树->根节点->右子树的顺序遍历二叉树
题目中我们可知需要根据给出的前序遍历序列与中序遍历序列构建一个二叉树,解题思路就是通过前序序列确定根节点,然后根据找出的根节点将中序序列分为:[左子树,根节点,右子树]这样三个范围,然后递归构造左子树与右子树,以此类推直到完成构建
3.实战代码
/*** 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* build(vector<int>& preorder, vector<int>& inorder,int& previ,int inbegin,int inend){if(inbegin > inend){return nullptr;}//创建根节点TreeNode* root = new TreeNode(preorder[previ]);//通过前序确定根节点后将中序数组分为三部分//左子树 根节点 右子树int rooti = inbegin;while(inbegin <= inbegin){if(inorder[rooti] == preorder[previ]){break;}//寻找中序中的根节点所在的的位置rooti++;}//此时前序中的根节点构建完成,向后构建其他子树的根节点previ++;//左子树递归构建[inbegin,rooti-1]区间//右子树递归构建[root+1,inend]区间root->left = build(preorder,inorder,previ,inbegin,rooti-1);root->right = build(preorder,inorder,previ,rooti+1,inend);return root;}TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {int i = 0;return build(preorder,inorder,i,0,preorder.size()-1);}
};相关文章:
二叉树进阶学习——从前序和中序遍历序列构造二叉树
1.题目解析 题目来源:105.从前序与中序遍历序列构造二叉树——力扣 测试用例 2.算法原理 首先要了解一个概念 前序遍历:按照 根节点->左子树->右子树的顺序遍历二叉树 中序遍历:按照 左子树->根节点->右子树的顺序遍历二叉树 题目…...
【数据分享】2000—2023年我国省市县三级逐年植被覆盖度(FVC)数据(Shp/Excel格式)
之前我们分享过2000—2023年逐月植被覆盖度(FVC)栅格数据(可查看之前的文章获悉详情)和Excel和Shp格式的省市县三级逐月FVC数据(可查看之前的文章获悉详情),原始的逐月栅格数据来源于高吉喜学者…...
【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
Streamlit 是一个开源的 Python 库,专为数据科学家和机器学习开发者设计,旨在快速构建数据应用。通过简单的 Python 脚本,开发者无需掌握前端技术,即可将数据分析和模型结果转化为直观、交互式的 Web 应用。其简洁的 API 设计使得…...
OpenJudge | 置换选择排序
总时间限制: 1000ms 内存限制: 65536kB 描述 给定初始整数顺串,以及大小固定并且初始元素已知的二叉最小堆(为完全二叉树或类似完全二叉树,且父元素键值总小于等于任何一个子结点的键值),要求利用堆实现置换选择排序&a…...
如何提取b站的视频字幕,下载视频
打开视频地址 按F12打开—开发者工具 在开发者工具打开Network 过滤器关键字: 自动生成字幕:ai_subtitle 自制:json 打开/关闭字幕 刷新页面 找到字幕 点选字幕的respond 将方框中的内容复制; 复制到:https://www.drea…...
Vue中使用ECharts实现热力图的详细教程
在数据可视化领域,热力图是一种非常直观的表现形式,它通过颜色深浅来展示数据分布情况。在Vue项目中,我们可以使用ECharts这一强大的图表库来实现热力图。下面我将详细介绍如何在Vue中使用ECharts实现热力图。效果如下图: 一、准备…...
Arduino UNO R3自学笔记13 之 Arduino使用LM35如何测量温度?
注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。 前言:学习使用传感器测温。 1.LM35介绍 一般来讲当知道需求,就可以 通过既定要求的条件来筛选需要的器件,多方面的因素最终选定了器件…...
蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键
蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键 第一节 硬件解读第二节 CubeMX配置第三节 MDK代码 第一节 硬件解读 扩展模块和ADC模块是一摸一样的,插在主板上。 引脚对应关系: PB6-ROW1 PB7-ROW2 PB1-COLUMN1 PB0-COLUMN2 PA8-COLUMN3 …...
Apollo9.0 Planning2.0决策规划算法代码详细解析 (4): PlanningComponent::Proc()
🌟 面向自动驾驶规划算法工程师的专属指南 🌟 欢迎来到《Apollo9.0 Planning2.0决策规划算法代码详细解析》专栏!本专栏专为自动驾驶规划算法工程师量身打造,旨在通过深入剖析Apollo9.0开源自动驾驶软件栈中的Planning2.0模块&am…...
AAA Redis的过期删除策略+缓存雪崩+缓存一致性问题
目录 一、三种删除策略比较 二、缓存雪崩缓存击穿缓存穿透 三、缓存一致性 Redis学习笔记 一、三种删除策略比较 内存占用CPU占用特征定时删除节约内存,无占用不分时段占用CPU资源,频度高时间换空间惰性删除内存占用严重延时执行,CPU利用…...
成都跃享未来教育咨询有限公司抖音小店:引领教育咨询新风尚
在数字化浪潮席卷全球的今天,教育咨询行业正经历着前所未有的变革。成都跃享未来教育咨询有限公司,作为教育行业的一颗璀璨新星,凭借其前瞻性的教育理念与创新的运营模式,在抖音平台上开设了小店,不仅为广大学子及家长…...
【堆排】为何使用向下调整法建堆比向上调整法建堆更好呢?
文章目录 前言一、堆排代码一、计算使用向上调整法建堆的时间复杂度二、计算使用向下调整法插入的时间复杂度总结 前言 在博主的上一篇博客堆排(链接在这里点击即可)的总结中提出啦使用向下调整法建堆比使用向上调整法建堆更好,是因为使用向上调整法建堆的时间复杂…...
在Stable Diffusion WebUI中安装SadTalker插件时几种错误提示的处理方法
SD中的插件一般安装比较简单,但也有一些插件安装会比较难。比如我在安装SadTalker时,就遇到很多问题,一度放弃了,后来查了一些网上攻略,自己也反复查看日志,终于解决,不吐不快。 一、在Stable …...
使用ffmpeg合并视频和音频
使用ffmpeg合并视频和音频 - 哔哩哔哩 简介 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec࿰…...
周末总结(2024/10/05)
工作 人际关系核心实践: 要学会随时回应别人的善意,执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己,抬高别人(无阴阳气息) 朋友圈点赞控制在5min以内,职场社交不要放在5min以外 职场的人际关系在面对利…...
在Ubuntu中自动挂载SMB/CIFS共享
文章目录 0. 引言1. 使用credentials文件存储认证信息2. 挂载点的准备3. 必要软件的安装4. 调整挂载参数5. 测试挂载6. 日志调试 0. 引言 本文是自己挂载共享磁盘的实践记录,将详细介绍如何在Linux系统中配置自动挂载SMB/CIFS共享,并提供一些常见问题的…...
pWnOS2.0 靶机渗透( cms 渗透,php+mysql 网站渗透,密码碰撞)
pWnOS2.0 靶机渗透( ) 靶机介绍 vulnhub 靶机 本地搭建 由于靶机特性,靶机网卡位nat模式扫不到,原来需要改 nat 的地址 参考方法 https://blog.csdn.net/Bossfrank/article/details/131415257 作者主页 https://blog.csdn.net/Bossfrank?typeblog P…...
【AI】AIOT简介
随着技术的快速发展,人工智能AI和物联网IoT已经成为当今最热门的技术领域。AIOT是人工智能和物联网的结合,使物联网设备更加智能化,能够进行自主决策和学习的技术。 通过物联网产生、收集来自不同维度的、海量的数据存储于云端、边缘端&#…...
picgo + typora + gitee图床
Picgo打造个人图床,稳定又安全 解决Typora笔记上传到CSDN图片无法显示的问题 typora中...
【路径规划】多机器人路径规划
摘要 多机器人路径规划在现代自动化、仓储管理及智能交通系统中有着广泛的应用。本文提出了一种基于A*算法的多机器人路径规划方法,旨在解决多机器人在同一环境中的路径冲突问题。通过采用启发式搜索和路径优化策略,机器人能够在保持避障的前提下实现最…...
别再踩坑了!Jetson Nano/Xavier NX上PyTorch和torchvision版本匹配保姆级指南(含JetPack 5/6)
Jetson设备PyTorch环境配置终极避坑手册:从版本匹配到性能调优 刚拿到Jetson Nano或Xavier NX的开发者们,十个里有九个会在PyTorch环境配置上栽跟头。不是torchvision报错就是CUDA不可用,最崩溃的是好不容易装好了却发现性能还不如树莓派。本…...
视频会议不止办公!揭秘它如何重构医疗与教育两大行业
在数字技术全面普及的今天,视频会议早已不再局限于企业内部日常办公沟通这一单一用途,开始深度渗透到各大垂直行业领域中。其中医疗、教育这两大与民生息息相关的领域,更是借助定制化开发的视频会议技术,解决了不少长期存在的行业…...
C++ 中this的秘密
class Test {public:void test() {test1();}void test1() {i = 10...
计算机组成原理知识可视化:影墨·今颜生成硬件结构图解
计算机组成原理知识可视化:影墨今颜生成硬件结构图解 每次给学生讲计算机组成原理,最头疼的就是怎么把那些抽象的概念讲明白。什么“冯诺依曼结构”、“CPU流水线”、“Cache工作原理”,光靠文字和PPT里的方块图,学生听得云里雾里…...
Canvas Quest跨平台部署实践:从星图GPU到本地环境的迁移
Canvas Quest跨平台部署实践:从星图GPU到本地环境的迁移 1. 前言:为什么需要跨平台部署 最近遇到不少开发者朋友在问同一个问题:在星图GPU平台上跑得好好的Canvas Quest模型,怎么迁移到本地环境就各种报错?这其实是个…...
Windows 11 离线部署 WSL2 与 Ubuntu:绕过商店限制的完整实战
1. 为什么需要离线部署 WSL2 与 Ubuntu 很多开发者在 Windows 11 上使用 WSL2 时都会遇到一个头疼的问题:微软商店经常无法正常访问或下载速度极慢。我自己就遇到过好几次,明明网络连接正常,但就是卡在下载环节,进度条一动不动。这…...
AI人脸隐私卫士快速部署指南:3步启动WebUI界面,开箱即用
AI人脸隐私卫士快速部署指南:3步启动WebUI界面,开箱即用 1. 引言:你的隐私,需要一道智能防线 你有没有过这样的困扰?公司团建拍了张大合照,想发朋友圈分享喜悦,却担心照片里同事们的隐私&…...
告别卡顿!用MobileNetv2+MPPTSNet-EC在树莓派上跑实时语义分割(附完整配置与性能测试)
树莓派实战:MobileNetv2MPPTSNet-EC实时语义分割全流程解析 当你在树莓派上第一次看到摄像头画面被实时分割成不同语义区域时,那种成就感绝对值得记录。本文将带你完整实现从模型选择到部署优化的全流程,用MobileNetv2MPPTSNet-EC这套组合拳&…...
传统信号处理与AI结合:FUTURE POLICE模型前端预处理技术详解
传统信号处理与AI结合:FUTURE POLICE模型前端预处理技术详解 最近在做一个语音相关的AI项目,发现直接把麦克风录到的原始音频丢给模型,效果总是不太理想。背景的键盘声、远处的谈话声,甚至是空调的嗡嗡声,都会让模型的…...
SenseVoice语音识别模型在Windows/Linux双平台部署全攻略(附SpringBoot API封装技巧)
SenseVoice语音识别模型在Windows/Linux双平台部署全攻略(附SpringBoot API封装技巧) 语音识别技术正加速渗透企业级应用场景,从智能客服到会议纪要自动化,SenseVoice作为开箱即用的高精度模型,其跨平台兼容性尤为突出…...
