代码随想录——从前序与中序遍历序列构造二叉树(Leetcode105)

题目链接
在这里插入图片描述

递归

/*** 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(preorder.length == 0 || inorder.length == 0){return null;}return buildHelper(preorder, 0, preorder.length, inorder, 0, inorder.length);}public TreeNode buildHelper(int[] preorder, int preorderStart, int preorderEnd, int[] inorder, int inorderStart, int inorderEnd){if(preorderStart == preorderEnd){return null;}int rootVal = preorder[preorderStart];TreeNode root = new TreeNode(rootVal);int middleIndex;for(middleIndex = inorderStart; middleIndex < inorderEnd; middleIndex++){// rootvalif(inorder[middleIndex] == rootVal){break;}}// 对中序遍历处理int leftInorderStart = inorderStart; int leftInorderEnd = middleIndex;int rightInorderStart = middleIndex + 1;int rightInorderEnd = inorderEnd;// 对前序遍历处理int leftPreorderStart = preorderStart + 1; int leftPreorderEnd = preorderStart + 1 + middleIndex - inorderStart;int rightPreorderStart = preorderStart + 1 + middleIndex - inorderStart;int rightPreorderEnd = preorderEnd;root.left = buildHelper(preorder, leftPreorderStart, leftPreorderEnd , inorder, leftInorderStart, leftInorderEnd);root.right = buildHelper(preorder,rightPreorderStart, rightPreorderEnd, inorder, rightInorderStart, rightInorderEnd);return root;}
}

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

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

相关文章

Linux(三)

Linux&#xff08;三&#xff09; Linux网络配置管理网络基础知识 IP地址A类 由1个字节网络地址3个字节主机地址B类 由2个字节网络地址2个主机地址C类 由3个字节网络地址1个主机地址D类:主要用于组播E类:为将来使用保留 子网掩码子网掩码作用网关DNS服务器 Linux用户管理用户的…

如何看centos 有没有安装x11

在CentOS系统中&#xff0c;可以通过检查是否存在X11相关的包来判断是否安装了X11。你可以使用yum工具来查询是否安装了xorg-x11-server-Xorg包&#xff0c;这通常是X11服务器的包名。 打开终端&#xff0c;输入以下命令&#xff1a; yum list installed | grep xorg-x11-ser…

浅析部署架构中的GZone、RZone和CZone

在现代软件开发中&#xff0c;理解和应用各种技术概念是成功的重要因素。本文将详细介绍GZone、RZone和CZone三个概念&#xff0c;解释它们的定义、特点、功能及应用场景&#xff0c;并通过实际案例帮助读者更好地理解这些概念。 一、GZone 1.1 定义 GZone是指“Global Zone…

MTK Android9.0 给vendor下文件夹权限,用于读取文件列表

1.背景 最近在TV开发中遇到一个问题&#xff1a;如何判断设备烧录过HDCP KEY的问题&#xff0c;由于MTK的官方接口返回值并不准确&#xff0c;只能判断2.2是否烧录&#xff0c;不能准确判断1.4是否烧录过&#xff0c;因为HDCP 的KEY有两个&#xff0c;分别是1.4和2.2&#xff…

结构体常见问题

问题一: 结构体的自引用 错误: typedef struct _Pos{ int x; int y; struct _Pos z; }pos; 定义一个结构体&#xff0c;其内部又定义了一个同类的结构体变量&#xff0c;这是一种错误。(因为如果你在结构体内部定义自己类型的结构体变量&#xff0c;在定义结构体的…

Shell脚本零碎知识积累

1、使用While循环打印目录中的所有文件&#xff1a; #!/bin/bash# 定义要遍历的目录 directory"./"# 使用while循环读取目录中的文件 while read file doecho "Found file: $file" done < <(find "$directory" -maxdepth 1 -type f)最后一…

linux创建离线yum源给局域网机器使用

适用场景&#xff1a;在封闭的内网环境中&#xff0c;无法使用互联网进行安装各种rpm包的时候&#xff0c;离线yum源可以解决大部分问题&#xff0c;配置号后可直接使用yum进行安装包 1.准备好镜像源ISO&#xff1a; 例如以下示例&#xff0c;具体可参考自己的系统进行下载&a…

新书推荐:7.3 for语句

本节必须掌握的知识点&#xff1a; 示例二十四 代码分析 汇编解析 7.3.1 示例二十四 ■for语句语法形式&#xff1a; for(表达式1;表达式2;表达式3) { 语句块; } ●语法解析&#xff1a; 第一步&#xff1a;执行表达式1&#xff0c;表达式1初始化循环变量&#xff1b; …

MATLAB基础应用精讲-【数模应用】贝叶斯优化

目录 前言 算法原理 朴素贝叶斯算法核心思想 示例 贝叶斯定理

【错题集-编程题】kotori 和迷宫(BFS / DFS)

牛客对应题目链接&#xff1a;kotori和迷宫 (nowcoder.com) 一、分析题目 迷宫问题的扩展。 二、代码 #include <iostream> #include <cstring> #include <queue>using namespace std;const int N 35; int x1, y1; // 标记起点位置 int n, m; char arr[N][…

Java实现抢红包算法——详细注释,标准语法

package learn;import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Random;public class RobRedPacket {// 发红包算法&#xff0c;金额参数以分为单位public static List<Integer> divideRedPacket(Integer totalAmoun…

电机控制系列模块解析(23)—— 同步机初始位置辨识

一、两个常见问题 为什么感应电机&#xff08;异步机&#xff09;不需要初始位置辨识&#xff1f;&#xff08;因此感应电机转子磁场在定子侧进行励磁&#xff0c;其初始位置可以始终人为定义为0&#xff09; 为什么同步磁阻电机需要初始位置辨识&#xff1f;&#xff08;因为…

【前端每日基础】day22——js控制结构

循环语句用于重复执行代码块。 for 循环 常用于需要精确控制循环次数的情况。 for (let i 0; i < 5; i) {console.log("Iteration:", i); }while 循环 当条件为真时重复执行代码块&#xff0c;适用于循环次数不确定但条件明确的情况。 let i 0;while (i <…

五分钟搭建一个Suno AI音乐站点

五分钟搭建一个Suno AI音乐站点 在这个数字化时代&#xff0c;人工智能技术正以惊人的速度改变着我们的生活方式和创造方式。音乐作为一种最直接、最感性的艺术形式&#xff0c;自然也成为了人工智能技术的应用场景之一。今天&#xff0c;我们将以Vue和Node.js为基础&#xff…

【软件设计师】计算机组成原理

1、数据的表示 1.1 进制转换 整型有4种进制形式&#xff1a; 1.十进制&#xff08;D&#xff09;&#xff1a; 都是以0-9这九个数字组成&#xff0c;不能以0开头。 2.二进制&#xff08;B&#xff09;&#xff1a; 由0和1两个数字组成。 3.八进制&#xff08;O&#xff09;&am…

嵌入式进阶——数码管

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 数码管结构移位寄存器原理图移位寄存器数据流程移位寄存器控制流程移位寄存器串联实现数码管显示 数码管结构 共阴与共阳 共阳数码…

前端后端是什么

前端和后端是软件开发中的两个主要部分&#xff0c;它们共同构成了一个完整的应用程序或网站。下面是对前端和后端的简要介绍&#xff1a; 前端&#xff08;Frontend&#xff09; 前端开发指的是应用程序或网站用户界面&#xff08;UI&#xff09;和用户体验&#xff08;UX&a…

sudo和su都莫名其妙无法使用时

不要慌&#xff0c;因为大部分解答都需要sudo去申请权限&#xff0c;所以我们只能重启进入grub界面。 重启时按住shift或者esc,进入后&#xff0c;按↓选中advanced options&#xff0c;enter 点e进入cmd 在输入你的密码后&#xff0c;按照步骤输入&#xff1a; mount -o r…

ESP8266,51单片机,ESP32,Arduino,STM32系列,Raspberry Pi 对比,异同点分析,优势分析和代表产品

下面是您提到的几款单片机的详细介绍&#xff0c;包括它们的应用场景、区别、优势和代表产品&#xff1a; 1. ESP8266 应用场景&#xff1a;主要用于WiFi联网项目&#xff0c;如智能家居设备、IoT传感器和无线控制。优势&#xff1a;低成本、内置Wi-Fi功能、低功耗模式&#…

linux centos循环ping网段ip

循环ping&#xff0c;检测ip是否可用&#xff0c;ping通为正在使用yes&#xff0c;no为不通 vim test.sh#!/bin/bash ip"192.168.1."echo "ping log:" > ./ping.txt for i in {1..128} doping -c 1 -w 1 -W 1 $ip$i | grep -q "ttl" &&a…