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

做网站和做推广的区别网站导航栏设计要求

做网站和做推广的区别,网站导航栏设计要求,山西时代网站建设,福建网站开发公司题目要求 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 提示: 1 < preorder.length < 3000inorder.length preorder.length-3000 < pr…

题目要求

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

提示:

  • 1 <= preorder.length <= 3000
  • inorder.length == preorder.length
  • -3000 <= preorder[i], inorder[i] <= 3000
  • preorder 和 inorder 均 无重复 元素
  • inorder 均出现在 preorder
  • preorder 保证 为二叉树的前序遍历序列
  • inorder 保证 为二叉树的中序遍历序列

解题思路

一般而言,知道一个二叉树的前序遍历和中序遍历就可以确定为唯一二叉树,前提是没有重复的子元素在里面。

在前序遍历中,我们知道一般是通过根左右的顺序进行遍历,所以我们可以在前序遍历中找到根节点,和当前根节点的左子树右子树的根节点。

而在中序遍历中,根节点的左边是所有左子树的节点,根节点的右边是所有右子树的节点,依此我们可以推断出左右子树的长度。

根据根节点,左右子树的长度作为条件,可以使用回溯的方式进行二叉树的构建。

算法流程

递推参数

根节点在前序遍历的索引 root 、子树在中序遍历的左边界 left 、子树在中序遍历的右边界 right 。

终止条件

当 left > right ,代表已经越过叶节点,此时返回 null 。

递推工作

1. 建立根节点 node : 节点值为 preorder[root] 。
2. 划分左右子树: 查找根节点在中序遍历 inorder 中的索引 i 。、
3. 构建左右子树: 开启左右子树递归。

代码解析

/*** 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 {Map<Integer, Integer> map;int[] preorder;int[] inorder;public TreeNode buildTree(int[] preorder, int[] inorder) {//首先建立中序遍历的哈希表,方便根据根节点的值找到根节点的位置HashMap<Integer, Integer> map = new HashMap<>();for (int i = 0; i < inorder.length; i++) {map.put(inorder[i], i);}this.map = map;this.preorder = preorder;this.inorder = inorder;return recursion(0,0,inorder.length-1);}public TreeNode recursion(int root, int left, int right) {//终止条件if(left > right){return null;}//构建当前根节点TreeNode rootNode = new TreeNode(preorder[root]);//当前根节点在中序遍历中的索引位置int rootInOrderindex = map.get(preorder[root]);//开始递归构建左子树//左子树的根节点:当前根节点在前序遍历的索引+1,因为 根左右//左子树的左节点:在中序遍历中,第一个节点必定在左子树中,所以左子树的左节点必定是left = 0//左子树的右节点:中序遍历中,右节点必定是当前根节点在中序遍历中的索引位置-1rootNode.left = recursion(root+1,left,rootInOrderindex-1);//开始递归构建右子树//右子树的根节点:在前序遍历中,当前根节点加上左子树的长度之后,再加一个节点就是有字数的根节点//右子树的左节点:在中序遍历中,右子树的左节点一般是根节点在中序遍历中的索引+1//右子树的右节点:中序遍历中,右子树的右节点是中序遍历的最后一个节点rootNode.right = recursion(root + rootInOrderindex - left +1,rootInOrderindex+1,right);return rootNode;}
}

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

相关文章:

  • 落伍者论坛 做网站五金公司宣传册设计样本
  • 域名建议网站福建福州最新情况
  • 网站设计样式莆田百度快照优化
  • 跨境网站有哪些家庭装什么宽带最划算
  • 个人网站做淘宝客如何备案网站建设客户目标模板
  • 建一个做笔记的网站网站开发mvc架构
  • 北京小学大兴网站建设河北省网站备案系统
  • 网站的维护与更新免费公司网站建设
  • 半岛官方网站下载营销的手段和方法
  • 企业网站建设研究怎样建设一个能上传数据的网站
  • 影音先锋资源网站建设专业婚纱摄影网站制作
  • 科技术语有哪些网站优化 毕业设计
  • 最新钓鱼网站源码云南省网站建设收费调查报告论文
  • 鸿邑网站建设网址大全4399
  • 男做基视频网站南山商城网站建设哪家服务周到
  • 做网站优化推广多少钱网站自己做还是找公司
  • 小说网站建设费用返利网app网站开发
  • 俄语网站都哪些推广普通话奋进新征程演讲稿
  • 广州免费设计网站建设精品资源共享课程网站建设论文
  • 网站设计时间网站建设维护知识
  • 丹灶做网站专业分销网站建设
  • 怎么做买东西的网站互联网舆情分析
  • 制作微网站的平台四川省住房和建设厅网站
  • 建设厅网站关于建筑资质合并ui设计的作用
  • 清风算法受影响的网站网站qq在线状态
  • 网站建设需要会什么软件有哪些方面网站各类模块内容说明
  • 河东做网站沈阳网站建设求职简历
  • 湖南网站建设360o江苏省建设局报考网站
  • 即墨专业医院网站制作公司网站建设实训结论
  • 佛山个性化网站开发平面设计有什么网站