LeetCode刷题记录:(9)从中序与后序遍历序列构造二叉树

leetcode传送通道

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */

// 解法一: 很好理解但太慢了
// class Solution {
//     public TreeNode buildTree(int[] inorder, int[] postorder) {
//         if(postorder.length==0){
//             return null;
//         }
//         TreeNode root = new TreeNode(postorder[postorder.length-1]);
//         if(postorder.length==1){
//             return root;
//         }
//         // 寻找切割点
//         int idx;
//         for(idx = 0; idx<inorder.length; idx++){
//             if(inorder[idx] == root.val){
//                 break;
//             }
//         }
//         // 递归子数组
//         root.left = buildTree(Arrays.copyOfRange(inorder,0,idx), Arrays.copyOfRange(postorder,0,idx));
//         root.right = buildTree(Arrays.copyOfRange(inorder,idx+1,inorder.length), Arrays.copyOfRange(postorder,idx,postorder.length-1));

//         return root;
//     }
// } 

// 解法二
class Solution {
    Map<Integer,Integer> map; // 转换inorder,更快查找切割点索引
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        map = new HashMap<>();
        for(int i = 0; i<inorder.length; i++){
            map.put(inorder[i],i);
        }
        return recur(inorder, 0, inorder.length, postorder, 0, postorder.length);
    }

    // 参数:中序数组-处理起点-处理终点,三者确定新的中序数组,,,后序同理
    private TreeNode recur(int[] inorder, int inStart, int inEnd, int[] postorder, int poStart, int poEnd){
        // 终止条件
        if (inStart == inEnd || poStart == poEnd) {// 相等了就到叶子了
            return null;
        }
        // 递归逻辑
        int rootVal = postorder[poEnd-1];
        TreeNode root = new TreeNode(rootVal);
        int rootIdx = map.get(rootVal);
        root.left = recur(inorder, inStart, rootIdx, postorder, poStart, poStart+rootIdx-inStart);
        root.right = recur(inorder, rootIdx+1, inEnd, postorder, poStart+rootIdx-inStart, poEnd-1);

        return root;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML5:七天学会基础动画网页11

CSS3动画 CSS3过渡的基本用法: CSS3过渡是元素从一种样式逐渐改变为另一种样式的效果。 过渡属性-transition 值与说明 transition-property 必需&#xff0c;指定CSS属性的name&#xff0c;transition效果即哪个属性发生过渡。 transition-duration 必需&#xff0c;t…

基于数据库的全文检索实现

对于内容摘要&#xff0c;信件内容进行全文检索 基于SpringBoot 2.5.6Postgresqljpahibernate实现 依赖 <spring-boot.version>2.5.6</spring-boot.version> <hibernate-types-52.version>2.14.0</hibernate-types-52.version><dependency><…

挂耳式蓝牙耳机哪家的好用?一次搞定的全方位选购攻略

对于那些在锻炼时也不忘享受旋律的朋友们&#xff0c;我要透露挂耳式蓝牙耳机的魔力&#xff01;这种耳机实在是太棒了&#xff0c;我猜很多同好都跟我一样&#xff0c;在做运动时偏爱有音乐相伴&#xff0c;以点燃我们的运动激情。但使用传统入耳式蓝牙耳机跑步时&#xff0c;…

综合利用Cisco Packet Tracer模拟器配置园区网

1. 内容 1.在课室交换机中创建各个课室的VLAN&#xff0c;并将1-20端口平均分配给各个课室。 2.使用课室交换机的每个端口只能接入一台计算机&#xff0c;发现违规就丢弃未定义地址的包。3.网络内部使用DHCP分配各课室的IP地址&#xff0c;在课室交换机按照第一题划分的VLAN地…

ThinkBook 14 G3 ITLC(21A3)原厂Win11系统下载,恢复开箱预装oem系统

lenovo联想ThinkBook 14 G3 笔记本电脑原装出厂Windows11系统镜像安装包 链接&#xff1a;https://pan.baidu.com/s/1MZj2Fm7NYUsCwcT9pFGb8Q?pwdajf0 提取码&#xff1a;ajf0 联想笔记本原装系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、Office办公软件、联想…

【Linux】Centos7安装Nginx1.21.6

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件( IMAP/POP3)代理服务器。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力在同类型的网页服务器中表现较好&#xff0c;中国大陆使nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。 …

蓝桥杯单片机快速开发笔记——HC573/HC138

一、原理分析 二、思维导图 三、代码参考 #include "HC573.h" #include "reg52.h"void Set_HC573(unsigned char channel, unsigned char dat) {P2 (P2 & 0x1f) | 0x00; //赋值之前&#xff0c;关闭全部锁存器P0 dat; //保存待设置…

钉钉小程序 - - - - - 如何通过一个链接打开小程序内的指定页面

方式1 钉钉小程序 scheme dingtalk://dingtalkclient/action/open_mini_app?miniAppId123&pagepages%2Findex%2Findex%3Fx%3D%25E4%25B8%25AD%25E6%2596%2587 方式2 https://applink.dingtalk.com/action/open_mini_app?type2&miniAppIdminiAppId&corpIdcorpId&…

【Git】error: bad signature 0xb86f1e1 和 bfatal: index file corrupt

一、问题 之前都好好的&#xff0c;今天执行 git add .的时候突然报错 报错原因翻译成中文&#xff1a;索引文件损坏 二、解决方法 方法1&#xff1a; 删除.git隐藏文件夹中的index文件 然后执行 git reset 重新生成index文件 git reset 方法2&#xff1a; 重新从远程克隆…

css之常用样式

展示样式一&#xff1a; <div class"showListBox"><div class"List" v-for"(i,index) in sealList" :key"index"> <div class"ListItemCon"><div class"ListItem-titleBox"><img src…

沉浸式感受旧时光,VR全景让游客都爱上老街区打卡地

近年来&#xff0c;随着城市建设的推进&#xff0c;很多老建筑以及周边的道路都发生了很大的变化&#xff0c;为了让更多的游客可以领略城市发展的进程以及旧时的人文风情&#xff0c;很多城市都会通过实地场景拍摄制作VR全景&#xff0c;将老街区、老建筑的真实场景进行虚拟再…

「SpringBrick快速入门指南」:☀️ 后端领域新兴技术璀璨之星☀️ 基于Spring Boot的高级插件化开发框架

文章目录 关于 | About技术文档 | Document开源项目 | Project 案例 | Demo项目结构 | Structure主程序配置集成 | Settings引入框架依赖 | Framework在配置文件加入配置 | YamlSpringBoot启动类改引导类 | Change 插件配置集成 | Settings引入依赖 | XML定义插件引导类 | Clas…

Python轴承故障诊断 (15)基于CNN-Transformer的一维故障信号识别模型

目录 往期精彩内容&#xff1a; 前言 1 轴承数据加载与预处理 1.1 导入数据 1.2 数据预处理&#xff0c;制作数据集 3 基于Pytorch的CNN-Transfromer轴承故障诊断分类 3.1 定义CNN-Transfromer分类网络模型 3.2 设置参数&#xff0c;训练模型 3.3 模型评估 代码、数据…

openstack(T)启动实例状态为错误,如何解决

---基本服务得是正常的 ---1.在web界面看是什么错误 点击你的实例名称&#xff0c;在概况里面去查看 当时我的error &#xff1a;编码500 消息 No valid host was found. 错误原因 1&#xff1a;资源不足 2&#xff1a;未开启虚拟机cpu虚拟化 解决&#xff1a; 1.资源不…

plotnine,一个非常实用的 Python 库!

大家好&#xff0c;今天为大家分享一个非常实用的 Python 库 - plotnine。 Github地址&#xff1a;https://github.com/has2k1/plotnine 在数据分析和可视化领域&#xff0c;Python 提供了许多强大的工具和库。其中&#xff0c;plotnine 是一个基于 Grammar of Graphics 理论的…

vmware workstation虚拟机报错”该虚拟机似乎正在使用中“

虚拟机报错&#xff1a; 解决方法&#xff1a; 进入到虚拟机的安装目录里&#xff0c;将lck结尾的文件删掉即可 重新点击虚拟机恢复正常

Nacos2.3.1集群部署

Nacos集群部署 1、下载安装包 https://github.com/alibaba/nacos/releases/download/2.3.1/nacos-server-2.3.1.tar.gz2、解压安装包 tar -xf nacos-server-2.3.1.tar.gz3、java环境配置 3.1、下载jdk17 https://download.oracle.com/java/17/archive/jdk-17.0.10_linux-x64…

读《Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection》

摘要、引言 点云&#xff08;PCD&#xff09;异常检测逐渐成为一个很有前途的研究领域&#xff08;笑了&#xff09; 提出了互补伪多模态特征&#xff08;CPMF&#xff09;&#xff0c;该特征利用手工制作的PCD描述符在三维模态中包含局部几何信息&#xff08;2023还在搞手工制…

阿里云免费证书改为3个月,应对方法很简单

情商高点的说法是 Google 积极推进90天免费证书&#xff0c;各服务商积极响应。 情商低点的话&#xff0c;就是钱的问题。 现在基本各大服务商都在2024年停止签发1年期的免费SSL证书产品&#xff0c;有效期都缩短至3个月。 目前腾讯云倒还是一年期。 如果是一年期的话&#x…

dp求公共子序列

#include<iostream> using namespace std; int main(){string a1,a2;while(cin>>a1>>a2){int data[201][201]{};// 每次的最长记录for(int i1;i<a1.size();i){for(int j1;j<a2.size();j){if(a1[i-1] a2[j-1]){// 相等在2个字母未加进之前长度1data[i]…
最新文章