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

网站建设自适应网站谷歌浏览器搜索入口

网站建设自适应网站,谷歌浏览器搜索入口,快站怎么搭建淘客链接,网页美工设计报价单给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7], postorder [9,15,7,20,3] 输出:[3…

给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。

示例 1:

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

示例 2:

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

提示:

  • 1 <= inorder.length <= 3000
  • postorder.length == inorder.length
  • -3000 <= inorder[i], postorder[i] <= 3000
  • inorder 和 postorder 都由 不同 的值组成
  • postorder 中每一个值都在 inorder 中
  • inorder 保证是树的中序遍历
  • postorder 保证是树的后序遍历

思路:后序遍历是左右根,左右无法确定,只有根是一个节点,是能确定的,必然在后续数组的最右边。然后中序遍历是左右根,当根确定之后,虽然左右子树的具体情况不知道,但是知道左右子树的大体,然后把左右子树,继续当作一个树,继续遍历,知道最后一个节点不再是树,向上放回,递归构造。

/*** 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 buildTree(int[] inorder, int[] postorder) {// 中序遍历是左中右,后序遍历是左右中,使用递归,用左右坐标来分割两个数组,每个小数组都是一个小树// 左右中,这是后序树的数组,那么这个子数组的最后一个元素一定是这个子树的根节点,然后中序序列里找// 左中右,找到中,就可以分割开左右子树,迭代分割,直到最小子树,无法分割return buildTreeHelper(inorder, 0, inorder.length-1, postorder, 0, postorder.length-1);}public TreeNode buildTreeHelper(int[] inorder, int inStart, int inEnd,int[] postorder, int postStart, int postEnd) {if (inStart > inEnd || postStart > postEnd) {return null;}// 最后一个必是根节点int root = postorder[postEnd];int rootIndex = 0;// 得到根节点坐标while (true) {if (root == inorder[rootIndex]) {break;}rootIndex++;}// 只有中序遍历知道左右子树的信息是不够的,还需要让后续遍历知道int leftLength = rootIndex - inStart;// 左子树的中序遍历数组起始就是父数组的起始,结束是根节点-1,后序遍历数组的起始就是父数组的起始,结束是父数组起始 + 左子树长度 - 1TreeNode left = buildTreeHelper(inorder, inStart, rootIndex-1, postorder, postStart, postStart + leftLength-1);// 右子树的中序遍历数组起始就是根节点+1,结束是父数组的结束,后序遍历数组的起始就是父数组的起始 + 左子树长度,结束是父数组的结束 - 1,减去的这个1就是根节点的长度TreeNode right = buildTreeHelper(inorder, rootIndex + 1, inEnd, postorder, postStart + leftLength, postEnd-1);// 然后构造返回return new TreeNode(root, left, right);}}

http://www.yayakq.cn/news/873707/

相关文章:

  • 个人网站做什么类型好wordpress单页留言板
  • 南京网站建设电话wordpress 邮件找客户端
  • 如何创建小程序深圳网站seo关键词
  • 网站开发开发有阿里云服务器 怎么做网站
  • 前端做网站使用的软件工具网站域名怎么快速备案价格
  • 百度收录什么网站吗甘肃住房建设厅网站
  • 山东建设厅官方网站网站后台编辑器控件下载
  • h5互动的网站网络营销推广方案心得
  • 网站单页支付宝支付怎么做成都有没有做网站建设的
  • 怎么才算完成一个网站wordpress 爱情模板下载地址
  • 中国城乡和住房建设部网站首页开源镜像网站开发
  • 响应式瀑布流网站程序有人看片吗免费观看
  • html5旅游网站源码主机做网站
  • 网站首页图片素材中山精品网站建设价位
  • 网站建设有些什么流程石家庄最新信息
  • 合肥网站建设方案案例怎么样查询网站被挂黑链
  • 黄山找人做网站百度提交网站已删内容
  • 黄冈网站推广平台桂林网站建设动服卖照明电源设
  • 电子商务网站优化做直播网站用什么语言
  • 网站源码 酷河北定制网站建设调试
  • 南京网站制作费用成全视频免费观看在线看ww
  • 门户网站做怎么使用服务器做网站
  • 组建做网站的团队crm客户关系管理系统源码
  • 公司网站模板侵权案例成品动漫和视频网站入口
  • 网站开发主要学什么十大咨询公司经典案例
  • 网站设计实施方案无水印logo免费一键生成
  • 石家庄站建设费用多少网站cms
  • 网站利用微信拉取用户做登录页有没有正规的毕设代做网站
  • 分类达人的作用贵阳seo推广一般费用是
  • 商洛城乡建设局网站贺州市八步区乡镇建设局网站