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

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

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

示例 1:

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

image

为什么存值下标,不是下标值————HashMap.get(Object key)方法,传入 key 即可返回对应的 value
class Solution {private Map<Integer, Integer> map;public TreeNode buildTree(int[] preorder, int[] inorder) {map = new HashMap<>();int n = inorder.length;// 存储中序遍历中“值-下标”的映射for (int i = 0; i < n; i++) {map.put(inorder[i], i);}// 调用递归构建方法return build(preorder, 0, n - 1, inorder, 0, n - 1);}// 递归构建二叉树的核心方法// preLeft/preRight:先序数组当前区间的左右边界// inLeft/inRight:中序数组当前区间的左右边界public TreeNode build(int[] preorder, int preLeft, int preRight, int[] inorder, int inLeft, int inRight) {// 递归终止条件:区间无效(左边界超过右边界)if (preLeft > preRight || inLeft > inRight) {return null;}// 1. 先序遍历的第一个元素就是当前子树的根节点int preRootIdx = preLeft;int rootVal = preorder[preRootIdx];TreeNode root = new TreeNode(rootVal);// 2. 找到根节点在中序遍历中的下标(这就是HashMap的核心作用)int inRootIdx = map.get(rootVal);// 3. 计算左子树的节点个数(中序数组中根节点左侧的元素都是左子树)int leftSubtreeSize = inRootIdx - inLeft;// 4. 递归构建左子树// 先序左子树区间:[preLeft+1, preLeft+leftSubtreeSize]// 中序左子树区间:[inLeft, inRootIdx-1]root.left = build(preorder, preLeft + 1, preLeft + leftSubtreeSize,inorder, inLeft, inRootIdx - 1);// 5. 递归构建右子树// 先序右子树区间:[preLeft+leftSubtreeSize+1, preRight]// 中序右子树区间:[inRootIdx+1, inRight]root.right = build(preorder, preLeft + leftSubtreeSize + 1, preRight,inorder, inRootIdx + 1, inRight);return root;}
}

【背!!!一点不会】

http://www.jsqmd.com/news/316624/

相关文章:

  • 信创生态认证视角:国产DevOps平台选型的权威认证价值与实操评估方法
  • 从团团收到分期乐支付宝红包:最实用的套装回收全流程解析
  • 2026年靠谱的四川家装电线电缆/中高压电缆厂家选购指南与推荐
  • 【EI会议】2026年计算机视觉、AI与智能自动化国际学术会议(ICCVAA 2026) - Vg
  • 不锈钢精密铸造厂家哪家强?2026年厂家推荐与排名,解决技术适配与供应链核心痛点
  • 2026年佳能石材机械排名公布,靠谱品牌客户认可度超高
  • Python 元组(tuple)高级用法全解析:不可变性下的高效编程
  • 可信数据空间、隐私计算、多方安全计算……厂商打包卖,但它们根本不是一回事
  • 24GB显卡轻松上手InternLM-20B大模型,手把手教程来啦
  • 基于遗传算法的路径规划算法matlab代码(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 电力系统潮流计算与优化分析-基于混合算法的仿真研究(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • MATLAB用遗传算法解决旅行商TSP问题(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 如何将CAD中的云线转为线段?
  • 接受外包Offer前一定要清楚的4件事
  • 智能空开实力供应商与生产商全解析:标杆企业、选购指南及2026下半年展望
  • Moltbot云上部署实录,仅需1分钟,把Clawdbot部署到轻量应用服务器,别在本地跑了~
  • ​女性10种顶级抗衰老保健品,2026抗衰AKG科学选购指南:从成分到性价比全解析
  • 2026年四川蜂糖李子苗厂家哪家强?优质厂家及场景适配建议 种植技术参考
  • 2026 IT 就业:应届生年薪 60 万与失业潮并存,选对赛道少走几十年弯路
  • springboot基于微信小程序的社区事件处理系统设计实现
  • springboot中国古诗词学习平台网站设计实现
  • 国家背书的 NISP 认证考试:一级 / 二级 / 三级报考条件 + 取证技巧全攻略
  • 2026年靠谱的矿泉水标签/化妆品标签最新TOP厂家排名
  • 深度测评9个AI论文网站,助你轻松搞定本科毕业论文!
  • springboot中药材店铺管理系统设计与实现
  • 浙江口碑好的GEO优化企业推荐,实力强的Geo优化公司全解析
  • springbot宠物领养管理系统设计开发实现
  • 细聊山东地区工艺精湛的炼油设备制造厂,费用大概多少钱
  • 2026年一体化污水处理设备供应商排名,可靠品牌有哪些?
  • 2026年口碑良好的内地恒温恒湿/高低温/交变湿热/HAST/低气压/环境试验箱厂家推荐及采购参考