当前位置: 首页 > news >正文

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

题目描述

给定两个整数数组 preorderinorder ,其中 preorder 是二叉树的先序遍历inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

示例 1:

img

输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
输出: [3,9,20,null,null,15,7]

示例 2:

输入: preorder = [-1], inorder = [-1]
输出: [-1]

提示:

  • 1 <= preorder.length <= 3000
  • inorder.length == preorder.length
  • -3000 <= preorder[i], inorder[i] <= 3000
  • preorderinorder无重复 元素
  • inorder 均出现在 preorder
  • preorder 保证 为二叉树的前序遍历序列
  • inorder 保证 为二叉树的中序遍历序列

解法一

思路:

image-20260315184932970

采用递归方法,先序遍历第一个节点是根节点,在中序遍历中可以找到根节点的左右子树节点范围。

在先序遍历中最后一个左子树节点序号为x。

x-preLeft-1=pIndex-1-inLeft

x=pIndex-inLeft+preLeft

代码:

/*** 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 build(int[] preorder, int preLeft, int preRight,Map<Integer,Integer> map,int inLeft,int inRight) {if(preLeft > preRight||inLeft>inRight) return null;int rootVal=preorder[preLeft];TreeNode root = new TreeNode(rootVal);int pIndex= map.get(rootVal);root.left=build(preorder,preLeft+1,pIndex-inLeft+preLeft,map,inLeft,pIndex-1);root.right=build(preorder,pIndex-inLeft+preLeft+1,preRight,map,pIndex+1,inRight);return root;}public TreeNode buildTree(int[] preorder, int[] inorder) {int preLen=preorder.length;int inLen=inorder.length;if(preLen!=inLen) return null;Map<Integer,Integer> map=new HashMap<>();for(int i=0;i<inLen;i++){map.put(inorder[i],i);}return build(preorder,0,preLen-1,map,0,inLen-1);}
}
http://www.jsqmd.com/news/481994/

相关文章:

  • 打开网站显示Parse error: syntax error, unexpected { (T_CURLY_OPEN)错误怎么办|已解决
  • 2026年柔光砖深度选型指南:不同需求下的最佳匹配方案 - 速递信息
  • 2026年大连全屋定制品牌深度测评:基于设计、工艺与服务的五维对比 - 品牌推荐
  • 打开网站显示Parse error: syntax error, unexpected echo (T_ECHO) 错误怎么办|已解决
  • 打开网站显示Parse error: syntax error, unexpected end of file in错误怎么办|已解决
  • 智慧矿井监测数据集 矿车载人状态检测 矿车数据集 矿山井下作业安全监测、违规载人行为自动识别、智能视频监控预警第10563期
  • 道路基建材料升级趋势:2026年主流沥青厂家市场竞争力与行业格局解析 - 十大品牌推荐
  • 2026年用户口碑优选大连全屋定制品牌:五大品牌真实案例与服务体验聚焦 - 品牌推荐
  • 2026年河南营业性演出许可证办理指南:这5大关键步骤你了解吗? - 企业推荐官【官方】
  • 2026年道路工程选型必看:沥青厂家适配指南与核心能力实测对比 - 十大品牌推荐
  • 2026年沥青厂家深度测评:基于材料性能与施工方案的五维战力解析 - 十大品牌推荐
  • AtCoder Beginner Contest 449 (A~D)
  • 2026年吉林营业性演出许可证代办,如何选择排名前五的专业机构? - 企业推荐官【官方】
  • 网站后台上传大文件(如压缩包、大图片)时,提示“文件上传大小超出限制”,无法完成上传
  • 2026年直播主播电商财税合规指南:TOP10代理记账公司如何一站式解决风险? - 企业推荐官【官方】
  • 2026年新疆营业性演出许可证办理指南:这5大关键步骤你了解吗? - 企业推荐官【官方】
  • 2026年沥青厂家深度测评:基于材料性能与施工能力的五维战力全解析 - 十大品牌推荐
  • 2026年陕西营业性演出许可证办理指南:一文详解五大关键步骤与行业新规 - 企业推荐官【官方】
  • 《Learning Latent Dynamics for Planning from Pixels》随记
  • 2026年成都演出市场,如何选择TOP5营业性演出许可证办理机构? - 企业推荐官【官方】
  • 消费升级驱动品质家居:2026年大连全屋定制市场格局与主流品牌竞争力分析 - 品牌推荐
  • 2026年辽宁营业性演出许可证代办机构,如何选择排名前五的可靠商家? - 企业推荐官【官方】
  • 提示词注入测试 单指令
  • 使用OpenClaw+Skill自动发布微信公众号文章
  • OpenClaw中文版AI工具推荐 助力企业数字化转型 - 企业推荐官【官方】
  • 2026年办理长春营业性演出许可证的流程和周期,目前TOP5公司是哪几家? - 企业推荐官【官方】
  • 2026年长春营业性演出许可证代办,这5家专业机构为何备受行业推荐? - 企业推荐官【官方】
  • 2026年上海公司注册代办服务商TOP10,上海众轩实业有限公司? - 企业推荐官【官方】
  • 个人微信接入龙虾全攻略:官方合规直连,模型运行清晰,新手零门槛上手
  • lisp-hello world - liyan