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

news2024/11/18 21:25:45

2023.10.21

        本题需要根据前序遍历序列和中序遍历序列来构造出一颗二叉树。类似于从中序与后序遍历序列构造二叉树 。使用递归, java代码如下:

/**
 * 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[] preorder, int[] inorder) {
        if(inorder.length == 0) return null;
        int rootValue = preorder[0];
        TreeNode root = new TreeNode(rootValue);
        if(inorder.length == 1) return root;
        //找到中序遍历的切割点
        int seg = 0;
        for(int i=0; i<inorder.length; i++){
            if(inorder[i] == rootValue){
                seg = i;
                break;
            }
        }
        int[] in_left = Arrays.copyOfRange(inorder,0,seg);
        int[] in_right = Arrays.copyOfRange(inorder,seg+1,preorder.length);
        preorder = Arrays.copyOfRange(preorder,1,preorder.length);//去掉第一个元素,也就是根节点的值
        int[] pre_left = Arrays.copyOfRange(preorder,0,in_left.length);
        int[] pre_right = Arrays.copyOfRange(preorder,in_left.length,preorder.length);
        //递归处理左右子树
        root.left = buildTree(pre_left,in_left);
        root.right = buildTree(pre_right,in_right);
        return root;
    }
}

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

建筑模板价格多少钱一张?

建筑模板是建筑施工中常用的一种材料&#xff0c;它的价格对于建筑行业来说非常重要。根据搜索结果&#xff0c;以下是关于建筑模板价格的具体信息&#xff1a; 1. 建筑模板尺寸和价格&#xff1a; - 常见的建筑模板尺寸有两种&#xff1a;2440mm 1220mm和1830mm 915mm - 一般…

个人微信号管理工具哪个好?

先来看看微信个人号管理工具的应用场景和功能。 下面主要从微信个人号管理工具中我觉得比较好用的功能进行讲解&#xff1a; 1加粉功能 私域流量池搭建第一步&#xff0c;导入用户。 导入数据&#xff08;微信号或手机号&#xff09;&#xff0c;设置加人任务&#xff0c;每天会…

OpenCV中world模块介绍

OpenCV中有很多模块&#xff0c;模块间保持最小的依赖关系&#xff0c;用户可以根据自己的实际需要链接相关的库&#xff0c;而不需链接所有的库&#xff0c;这样在最终交付应用程序时可以减少总库的大小。但如果需要依赖OpenCV的库太多,有时会带来不方便&#xff0c;此时可以使…

SLAM进阶(九)---- cannot open shared object file问题

1 为什么会遇到这个问题 我们在 2 查看问题所在 我的项目依赖于VTK 7.1.1&#xff0c;PCL 1.9.1。项目可以完成编译&#xff0c;但是不能执行。即使用动态库编译链接stereo_inertial_tum_vi_old.cc后&#xff0c;得到名为stereo_inertial_tum_vi_old的可执行程序。但是在运行st…

哪些企业适合做私域?私欲怎么做成效大?

什么是私欲 简单直白来说&#xff0c;就是不用花钱就可以触达客户的渠道。私域流量就是私人的流量&#xff08;不用花钱&#xff09;。 哪些企业适合做私域&#xff1f; 》复购率高 比如美妆护肤产品行业、餐饮等快消品行业。 可通过群发推广消息、朋友圈营销和在社群里不断进…

Breach 1.0 靶机

Breach 1.0 环境配置 设置 VMware 上的仅主机模式网卡&#xff0c;勾选 DHCP 自动分配 IP&#xff0c;将子网改为 192.168.110.0/24 将靶机和 kali 连接到仅主机网卡 信息搜集 存活检测 详细扫描 后台网页扫描 网页信息搜集 Initech被入侵&#xff0c;董事会投票决定引入…

二、UI入门

1. QWidget类 QWidget类是Qt所有图形用户界面&#xff08;组件&#xff09;的基类&#xff0c;因此QWidget类内部规定了所有最基础的UI相关功能。例如以下成员&#xff1a; ● width : const int 宽度&#xff08;单位&#xff1a;像素&#xff0c;后文同&#xff09; Qt中的…

基于SegFormer的改进语义分割该网络

摘要 场景解析是无人驾驶领域的一个关键任务&#xff0c;但是传统的语义分割网络往往只关注于提取更深层次的图像语义信息而忽略了全局信息对图像分割任务的重要性。另外随着图像在深层次卷积网络中的传递&#xff0c;卷积核天然的滤波作用会使得图像的边缘趋于平滑而丢失细节特…

2015年408真题复盘

紫色标记是认为有一定的思维难度或重点总结 红色标记是这次刷真题做错的 记录自己对题目的一些想法与联系&#xff0c;可能并不太关注题目本身。 分数用时 选择部分10/21 78/8036min大题部分总分 摘自知乎老哥&#xff1a;“我做历年真题时&#xff0c;绝大部分是130~139&#…

LVS负载均衡集群 (NAT模式)

LVS集群 集群的概念&#xff1a; 为解决某个特定的问题&#xff0c;将多个计算机组合起来形成一个单个系统 集群的水平扩展&#xff1a; 增加设备&#xff0c;并行运行多个服务&#xff0c;通过网路连接和算法来调度服务分配的问题 集群的类型&#xff1a; 负载均衡集群&#…

【斗罗二】冰帝两次险些杀死雨浩,天梦哥求助伊老遭拒绝,霍云儿现身救儿子

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析绝世唐门。 斗罗大陆动画第二部绝世唐门已经更新了&#xff0c;霍雨浩与冰帝完美融合&#xff0c;成功觉醒了第二武魂&#xff0c;霍挂的时代正式到来。只是在整个第19集中&#xff0c;官方做了大量的改编&#xff0c;不但…

有湖有仓,如何升级到湖仓一体

很多企业在过去的 IT 基础建设过程中&#xff0c;都已经搭建了数据仓库或数据湖&#xff0c;或者两者都有。其中数据仓库一般使用的是传统 Oracle 或者传统 MPP 数据库&#xff0c;如 Teradata 和 Greenplum&#xff0c;数据湖使用 Hadoop 大数据平台。所以在考虑湖仓一体升级改…

ps插件Coolorus for Mac中文激活版

Coolorus是一款非常实用的Photoshop插件&#xff0c;它为Photoshop增加了色环配色面板&#xff0c;让设计师可以更直观地选择颜色。同时&#xff0c;Coolorus还提供了多种专业配色方案&#xff0c;如鲜艳色、复古色、日常色等&#xff0c;设计师可以直接套用这些方案&#xff0…

Power BI 傻瓜入门 1. 数据分析术语:Power BI风格

本章内容包括&#xff1a; 了解Power BI可以处理的不同类型的数据了解您的商业智能工具选项熟悉Power BI术语 数据无处不在。从你醒来的那一刻到你睡觉的时候&#xff0c;某个系统会代表你收集数据。即使在你睡觉的时候&#xff0c;也会产生与你生活的某些方面相关的数据。如…

计算机网络的七层结构、五层结构和四层结构

为什么要分层&#xff1a; 这个就和我们平常写程序一样&#xff0c;高内聚、低耦合。将网络进行分层我们就可以根据每一层的功能分开开发设计&#xff0c;将复杂的网络问题分解为更简单和清晰的小问题&#xff0c;方便设计、实现和标准化。无需在意其他层是如何实现的&#xff…

【框架源码篇 04】Spring源码手写篇-Bean定义配置化

Spring源码手写篇-Bean定义配置化 一、Bean定义配置分析 我们前面实现了手写IoC和AOP的功能&#xff0c;但是我们在使用的时候发现我们的调用代码还是非常的繁琐&#xff0c;会给应用者很不好的体验。 上面的代码很直观的看到重复代码很多&#xff0c;要用户设置的内容也很多&…

基于springboot实现学生综合测评系统项目【项目源码+论文说明】

基于springboot实现学生综合测评系统演示 摘要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;学生综合测评系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;学校规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人…

运营商大数据精准营销,击碎你的固化营销思维

大数据精准营销服务是大数据应用的典型场景之一&#xff0c;也是依托大数据和互联网提升企业效率的一种有效手段。但是&#xff0c;在选择大数据服务的很多时候&#xff0c;企业往往要考虑法律与合规的问题&#xff0c;其中比较重要的是数据获取渠道与数据是否脱敏。在所有大数…

CSS 两栏布局

目录 CSS两栏布局&#xff08;左列定宽&#xff0c;右列自适应宽&#xff09; 方法一&#xff1a;浮动margin 方法二&#xff1a;定位margin 方法三&#xff1a;浮动BFC 方法四&#xff1a;Flex布局 方法五&#xff1a;able布局 CSS两栏布局&#xff08;左列不定宽&#…

一、Qt简介

1. 什么是Qt&#xff1f; Qt是一个基于C的图形用户界面&#xff08;GUI&#xff09;开发框架&#xff0c;但图形用户界面并不是Qt的全部&#xff0c;因为Qt还包含了很多非图形化的开发功能&#xff1a;多线程、数据库、图像图形处理、音视频处理、网络通信、文件IO等。 一方面…