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

从前序与中序遍历序列构造二叉树(中等)

先从前序遍历列表取出第一个元素,这个元素就是根节点,然后从中序遍历中找到这个根节点,节点左侧就是该节点的左子树的节点集合,右侧就是该节点的右侧节点集合,然后递归构建左右子树。

/*** 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 {private Map<Integer, Integer> indexMap;public TreeNode myBuildTree(int[] preorder,int[] inorder,int preorder_left,int preorder_right,int inorder_left,int inorder_right){if(preorder_left>preorder_right){return null;}int preorder_root=preorder_left;int inorder_root=indexMap.get(preorder[preorder_root]);TreeNode root=new TreeNode(preorder[preorder_root]);int size_left_subtree=inorder_root-inorder_left;root.left=myBuildTree(preorder,inorder,preorder_left+1,preorder_left+size_left_subtree,inorder_left,inorder_root-1);root.right=myBuildTree(preorder,inorder,preorder_left+size_left_subtree+1,preorder_right,inorder_root+1,inorder_right);return root;}public TreeNode buildTree(int[] preorder, int[] inorder) {int n=inorder.length;indexMap=new HashMap<Integer,Integer>();for(int i=0;i<n;i++){indexMap.put(inorder[i],i);}return myBuildTree(preorder,inorder,0,n-1,0,n-1);}
}

http://www.xdnf.cn/news/6519.html

相关文章:

  • 【linux】Web服务—搭建nginx+ssl的加密认证web服务器
  • Ubuntu快速安装Python3.11及多版本管理
  • 项目版本管理和Git分支管理方案
  • Android 中 显示 PDF 文件内容(AndroidPdfViewer 库)
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(二)法线贴图
  • SpringCloud微服务开发与实战
  • 官方 Elasticsearch SQL NLPChina Elasticsearch SQL
  • [特殊字符][特殊字符]知识库PHP版 | ChatMoneyAI宝塔面板Docker多部署
  • Java EE初阶——wait 和 notify
  • CentOS高手之路:从进阶实战到企业级优化
  • 维智定位 Android 定位 SDK
  • 网站运维基础 | 2. cms介绍及wordpress的搭建
  • 物联网中的WiFi模式解析:AP、STA与混合模式
  • 【前端优化】vue2 webpack4项目升级webpack5,大大提升运行速度
  • 还没用过智能文档编辑器吗?带有AI插件的ONLYOFFICE介绍
  • 聊聊redisson的RLock的unlock
  • Java微服务架构实战:Spring Boot与Spring Cloud的完美结合
  • Linux 内核中 inet_accept 的实现与自定义传输协议优化
  • 在哪一个终端下运行有影响吗?pip install pillow
  • eVTOL、无人机电机功耗图和电机效率图绘制测试
  • Mendix 中的XPath 令牌(XPath Tokens)详解
  • 低空态势感知:基于AI的DAA技术是低空飞行的重要安全保障-机载端地面端
  • C++ Lambda 表达式介绍
  • 人工智能100问☞第24问:什么是生成对抗网络(GAN)?
  • 互联网应用的安全防线-身份证实名认证api-身份证三要素验证
  • BUUCTF——web刷题第一页题解
  • 【Java实战】IO流(转换流,打印流,数据流,序列化流)
  • Java随机生成邀请码 (包含字母大小写+数字)
  • 2022 Hubei Provincial Collegiate Programming Contest
  • 栈的计算方式和表达方式