LeetCode hot100——从前序与中序遍历序列构造二叉树

发布时间:2026/10/18 14:58:41
LeetCode hot100——从前序与中序遍历序列构造二叉树 题目给定两个整数数组preorder和inorder其中preorder是二叉树的先序遍历inorder是同一棵树的中序遍历请构造二叉树并返回其根节点。示例 1:输入: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 3000inorder.length preorder.length-3000 preorder[i], inorder[i] 3000preorder和inorder均无重复元素inorder均出现在preorderpreorder保证为二叉树的前序遍历序列inorder保证为二叉树的中序遍历序列题解/** * 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 { HashMapInteger, Integer map new HashMap(); public TreeNode buildTree(int[] preorder, int[] inorder) { // 记录中序每个值对应的下标 for(int i 0; i inorder.length; i){ map.put(inorder[i], i); } return build(preorder, 0, preorder.length-1, 0, inorder.length-1); } /** * preL,preR前序区间 [preL, preR] * inL,inR中序区间 [inL, inR] */ TreeNode build(int[] preorder, int preL, int preR, int inL, int inR){ if(preL preR) return null; // 根节点是前序最左边 int rootVal preorder[preL]; TreeNode root new TreeNode(rootVal); // 根在中序中的位置 int rootIdx map.get(rootVal); // 左子树节点个数 int leftSize rootIdx - inL; // 构建左子树前序[preL1, preLleftSize]中序[inL, rootIdx-1] root.left build(preorder, preL1, preLleftSize, inL, rootIdx-1); // 构建右子树前序[preLleftSize1, preR]中序[rootIdx1, inR] root.right build(preorder, preLleftSize1, preR, rootIdx1, inR); return root; } }思路拿前序第一个值作为根在中序找到根的下标左边全部是左子树右边全部是右子树算出左子树节点数量切分前序数组的左右部分递归构建左、右子树。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询