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

【前序+中序】重建二叉树


求解代码

publicTreeNodereConstructBinaryTree(int[]preOrder,int[]vinOrder){intpre_len=preOrder.length;intvin_len=vinOrder.length;if(pre_len==0||vin_len==0){returnnull;}TreeNoderoot=newTreeNode(preOrder[0]);for(inti=0;i<vinOrder.length;i++){if(preOrder[0]==vinOrder[i]){// 左子树:前序从[1, i+1) 中序从[0, i)root.left=reConstructBinaryTree(Arrays.copyOfRange(preOrder,1,i+1),Arrays.copyOfRange(vinOrder,0,i));// 右子树:前序从[i+1, pre_len) 中序从[i+1, vin_len)root.right=reConstructBinaryTree(Arrays.copyOfRange(preOrder,i+1,preOrder.length),Arrays.copyOfRange(vinOrder,i+1,vinOrder.length));break;}}returnroot;}

小贴士

Arrays.copyOfRange(原数组, from, to)→ 复制数组的[from, to)区间,返回新数组;

中序遍历分割数组比较好理解:

中序遍历过程中左子树是从[0,i),右子树是从[i+1,vin_len)

前序遍历分割数组可能会有点绕,这里解释一下:

中序遍历到位置i时,可以得知左子树所在的区间是[0,i-1],长度就是i

那么回到前序遍历中来,因为同一棵树它的左子树的长度在前序遍历和中序遍历的过程中是相同的,也就是长度是i,那么又因为前序遍历的0位置是根节点,则前序遍历的左子树所在的区间就是[1,i]

由于Arrays.copyOfRange方法是左闭右开区间,所以前序遍历过程中,左子树是从[1,i+1),右子树就是从[i+1,pre_len)

http://www.cnnetsun.cn/news/622482.html

相关文章:

  • 用两个栈实现队列
  • ComfyUI硬件性能优化全攻略:如何在有限资源下获得最佳表现
  • EPOCH完全指南:从零掌握等离子体粒子模拟技术
  • 5分钟部署Youtu-2B:腾讯轻量级LLM智能对话服务一键启动
  • TwitchDropsMiner终极指南:免费快速获取游戏掉落奖励
  • 终极离线OCR解决方案:3步完成高效文字识别
  • 终极ProGuard Maven插件:一键实现Java代码优化与安全加固
  • 轻量LLM推理框架:Youtu-2B加速方案对比
  • Citra模拟器完全配置手册:从零打造完美3DS游戏体验
  • HY-MT1.5-7B性能优化:批处理大小与延迟平衡策略
  • Qwen2.5-7B模型详解:解码策略与生成质量控制
  • 利用BRAM构建小型查找表:快速查表应用示例
  • Navicat Premium Lite(数据库管理)
  • windows长截图httpspider
  • Skill Manager |
  • PDF Arranger终极指南:快速掌握高效文档管理的完整教程
  • Citra模拟器完整指南:从零开始体验3DS游戏的终极教程
  • 2026年AI绘画入门必看:Z-Image-Turbo开源模型+高分辨率生成实战指南
  • 基于vivado的ego1开发板大作业快速理解指南
  • PyTorch镜像内置tqdm进度条,训练过程一目了然
  • Android悬浮窗开发框架:EasyFloat重构指南与创意实现方案
  • Moonlight-Switch:在Switch上畅享PC游戏的完整配置指南
  • 015-计算机操作系统实验报告之进程的创建!
  • Z-Image-Turbo省钱部署方案:预置权重+弹性GPU,成本直降50%
  • Upscayl AI图像放大工具实用指南:从入门到深度配置
  • AI读脸术应用创新:智能客服情绪识别
  • 3步解锁Switch终极潜能:PC游戏随身畅玩方案
  • Android悬浮窗开发终极指南:EasyFloat框架完整教程
  • 3步轻松清理:AntiDupl.NET重复图片智能管理完全指南
  • B站音频下载终极指南:轻松获取高品质音乐的完整教程