当前位置: 首页 > 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.r43.cn/news/149639.html

相关文章:

  • 结婚网站模版河南网站推广公司
  • 泉州市第一建设有限公司网站中国免费网站服务器主机域名
  • 手表网站 云所有的竞价托管公司
  • 怎么让百度收录我的网站2023免费推广入口
  • flash网站模板中心永久免费自动建站
  • 网站建设类课题的研究方法seo网站推广报价
  • 江门网站建设设计贵州seo学校
  • 商城网站开发平台工程建设数字化管理平台
  • 做网站草图找素材怎样把个人介绍放到百度
  • 政府网站建设岗位说明青岛seo排名扣费
  • 河源车祸今日最新消息陕西网络营销优化公司
  • 建设工程职称 在哪个网站厦门seo俱乐部
  • 哪里做网站做得好关键词密度
  • 如何用快站做pc端网站网站如何快速收录
  • b2c代表网站有哪些网络优化
  • 广州免费网站建设微营销软件
  • 网站是用什么做的什么是淘宝搜索关键词
  • thinkcmf 做企业网站怎么宣传自己新开的店铺
  • 365元做网站上海百度整站优化服务
  • 微信微网站建设平台襄阳seo培训
  • 用html制作个人网站源代码seo模板建站
  • 深圳 网站建设佛山百度关键词seo外包
  • 江苏网页设计公司链接优化方法
  • 自己做发卡网站长关键词怎么做快速的有排名
  • wordpress 批量建站百度推广多少钱一天
  • 北京微网站设计湖南百度推广代理商
  • 交互设计师优化网站建设
  • 深圳互联网设计公司专业做seo推广
  • wordpress网站维护营销方案设计思路
  • 网站建设与规划心得市场营销策划ppt