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

2023.7.8

        让我很难受的一道题,个人感觉难度不止中等。   首先要知道的是知道了前序/后序 + 中序 之后,是可以构造出相应且唯一的二叉树的。  

        本道题的思路通过递归的方式根据中序遍历数组和后序遍历数组构建二叉树,并返回根节点。递归的结束条件是中序遍历数组(也可以是后序遍历数组,这两数组长度始终相同)为空或长度为 1。 细节都在代码里了  ,下面看代码:

class Solution {
public:TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {if(inorder.size()==0) return NULL;//确定根节点,即后序遍历数组的最后一个元素。int rootvalue = postorder[postorder.size()-1];TreeNode* root = new TreeNode(rootvalue);if (inorder.size() == 1) return root;//找到中序遍历数组的切割点。int seg;for(seg=0; seg<inorder.size(); seg++){if(inorder[seg] == rootvalue) break;}//切割中序遍历数组的左右数组vector<int> in_left(inorder.begin(),inorder.begin()+seg);vector<int> in_right(inorder.begin()+seg+1,inorder.end());//切割后序遍历数组的左右数组postorder.resize(postorder.size()-1);//将根节点去掉vector<int> post_left(postorder.begin(),postorder.begin()+in_left.size());vector<int> post_right(postorder.begin()+in_left.size(),postorder.end());//递归处理左区间和右区间root->left = buildTree(in_left,post_left);root->right = buildTree(in_right,post_right);return root;}
};

         日后再回来二刷。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目中期检查会议和进度对接

1.召开中期项目检查会议&#xff0c;与团队成员和博士王锟对接进度。对整体项目表示满意接受&#xff0c;指出重点需要修改提升和进一步开发完善的部分&#xff0c;以增强系统的完整度、功能亮点和界面数量点。具体为 ①注重“highlight”&#xff0c;即布局凸显主题功能&…

ubuntu常用软件安装、异常处理

1.ubuntu更换源 打开以下文件&#xff1a; sudo gedit /etc/apt/sources.list 在文件中添加如下内容 #中科大源 deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main re…

大学英语六级相当于雅思考试多少分

雅思考试的难度&#xff0c;可以和大学英语六级进行对应&#xff0c;大家可以通过分数来基本确认雅思考试的难度系数。跟着小编来一起看看大学英语六级相当于雅思考试多少分&#xff1f; 英语六级相当于雅思多少分 大学英语六级和雅思没有直接的分数对应关系&#xff0c;一般大…

Django学习笔记

Django学习笔记 初识Django安装Django创建Django项目APP启动Django快速上手再写一个页面templates模板静态文件 模板语法请求和相应登录案例 数据库操作安装第三方模块ORM Django官网 : https://docs.djangoproject.com/en/4.2/Django中文文档参考网站&#xff1a;https://yiyi…

XSS学习

目录 什么是XSS 概念 理解 XSS分类 存储型XSS 反射型XSS 原理 攻击过程 DOM型 攻击过程 DOM行XSS与反射型XSS区别 存储型XSS与反射型XSS区别 DVWA实验 反射型XSS low等级 JavaScript弹窗函数 攻击思路 攻击者web设计 medium等级 high等级 impissible等级 …

【openGauss数据库】--运维指南04--数据导入

【openGauss数据库】--运维指南04--数据导入 &#x1f53b; 一、openGauss导入数据&#x1f530; 1.1 概述&#x1f530; 1.2 INSERT语句写入数据&#x1f530; 1.3 gsql元命令导入数据&#x1f530; 1.4 使用gs_restore命令、gsql命令导入数据&#xff08;主要&#xff09; &a…

【计算机视觉】对比学习采样器sampler

前置知识准备 Samplers — Open Metric Learning documentation​​​​​​ 在该文档里&#xff0c;category表示类别&#xff0c;label表示商品&#xff0c;instance表示商品不同角度的图片。 category就是blouses_shirts&#xff1b;label就是15&#xff1b;instance就是这…

35.RocketMQ之Broker端消息存储文件详解

highlight: arduino-light Broker端文件详解 dubbo的核心是spi&#xff0c;看懂了spi那么dubbo基本上也懂了。对于rmq来说&#xff0c;它的核心是broker&#xff0c;而broker的核心是commitlog、consumequeue、indexfile&#xff0c;而这些文件对应的最终都是MappedFile&#x…

RTC时钟stm32f407(需要在手册上找到)

首先是备份域&#xff08;BKP&#xff09;&#xff0c;看手册时必须要看的&#xff08;以下的上电复位均是指备份域上电复位&#xff09; RTC时钟 这里的电源电压时指V(BAT); 电源复位&#xff1b; 上面三个寄存器时影子寄存器

在Django中使用xlrd读取excel表格数据

目录 方法一&#xff1a;按行读取 方法二&#xff1a;按表头与表数据一一对应的关系 方法三&#xff1a;按列的方式读取 之前有说到如何在Django中读取数据库数据写入到excel中 今天来说说如何读取excel中的数据&#xff0c;&#xff08;读取后就可以写入到数据库中了&#…

Mysql8安装教程与配置

添加密码 出现报错 MySQL error 1042: Unable to connect to any of the specified MySQL hosts. Failed to connect to MySQL Server 8.0.23 after 10 attempts. Ended configuration step: Starting the server 使用WinR --> 运行 “services.msc” --> 打开service服…

【通览一百个大模型】LaMDA(Google)

【通览一百个大模型】LaMDA&#xff08;Google&#xff09; 作者&#xff1a;王嘉宁&#xff0c;本文章内容为原创&#xff0c;仓库链接&#xff1a;https://github.com/wjn1996/LLMs-NLP-Algo 订阅专栏【大模型&NLP&算法】可获得博主多年积累的全部NLP、大模型和算法干…