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

公司门户网站首页买机票便宜网站建设

公司门户网站首页,买机票便宜网站建设,dw做门户网站,it 网站模板题目 给定两个整数数组 preorder 和 inorder #xff0c;其中 preorder 是二叉树的先序遍历#xff0c; inorder 是同一棵树的中序遍历#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,… 题目 给定两个整数数组 preorder 和 inorder 其中 preorder 是二叉树的先序遍历 inorder 是同一棵树的中序遍历请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7] 示例 2: 输入: preorder [-1], inorder [-1] 输出: [-1] 提示: 1 preorder.length 3000inorder.length preorder.length-3000 preorder[i], inorder[i] 3000preorder 和 inorder 均 无重复 元素inorder 均出现在 preorderpreorder 保证 为二叉树的前序遍历序列inorder 保证 为二叉树的中序遍历序列 前置知识:  preorder :前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点---根的左子树---根的右子树。 inorder:中序遍历(Inorder Traversal)——根的左子树---根节点---根的右子树 前序遍历所得的第一个节点就是根节点,所以可以用来确定的是root根节点在中序遍历的位置, 再根据中序遍历,root根节点的左边是这棵二叉树的左树,root根节点的右边是这课二叉树的右树来构建这课二叉树 以示例1为例谈谈对题目的理解 示例1输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] preorder [  3,  9,  20,  15,  7  ]   3就为这棵二叉树的root根节点 inorder [  9,  3,  15,  20,  7  ]  9为root的左树,并且只有一个节点,所以9为root的左节点 15,20,7这三个节点为root的右树,再根据中序遍历根的左子树---根节点---根的右子树可得 root的右节点为20这个节点,20节点的左节点为15这个节点,右节点为7这个节点 画图演示上述文字说明 解题思路: 根据题目所给的前序遍历的节点顺序在中序遍历中进行递归来构建二叉树 1.根据前序遍历找到中序遍历根节点iRoot的位置,创建根节点,再确定iBegin,iEnd的位置,i; 2.对iBegin和iEnd的位置进行判断,当iBeginiEnd时,返回null,递归开始回退; 2.在中序遍历当中根据iRoot ,iBegin,iEnd的位置,并进行左树和右树的构建; 对上述三步进行递归,递归完了之后,二叉树构建完成,返回根节点root 注:对前序遍历所得节点的利用才是本题代码的灵魂所在 图示: 解题代码 class Solution {public int i 0;public TreeNode buildTree(int[] preorder, int[] inorder) {return create_a_binary_tree(preorder, inorder, 0, inorder.length - 1);}public TreeNode create_a_binary_tree(int[] preorder, int[] inorder, int inBegin, int inEnd) {if (inBegin inEnd) {return null;//给定的数组int[] preorder, int[] inorder,遍历完了,没有子树了,该节点为空节点,返回null,递归开始回退}//先根据先序遍历创建根节点TreeNode root new TreeNode(preorder[i]);//找到当前根节点,在中序遍历的位置int rootIndex findIndex(inorder, inBegin, inEnd, preorder[i]);i;//递归构建左树root.left create_a_binary_tree(preorder, inorder, inBegin, rootIndex - 1);//递归构建右树root.right create_a_binary_tree(preorder, inorder, rootIndex 1, inEnd);//前序遍历完成,返回根节点return root;}private int findIndex(int[] inorder, int inBegin, int inEnd, int key) {for (int j inBegin; j inEnd; j) {if (inorder[j] key) {return j;}}return -1;} } 运行结果 题目链接 https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/submissions/ 举一翻三,再来一道 根据一棵树的中序遍历与后序遍历构造二叉树 给定两个整数数组 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] 后序遍历(Postorder Traversal)——根的左子树---根的右子树---根节点。 创建根节点后,先创建右数,再创建左树 根据示例1进行讲解,下图是代码递归过程 随着代码的递归,二叉树随之构建的过程  解题代码 public class Solution {public int i 0;public TreeNode buildTree(int[] inorder, int[] postorder) {i postorder.length - 1;return create_a_binary_tree(postorder, inorder, 0, inorder.length - 1);}public TreeNode create_a_binary_tree(int[] postorder, int[] inorder, int inBegin, int inEnd) {if (inBegin inEnd) {return null;//给定的数组int[] postorder, int[] inorder,遍历完了,没有子树了,该节点为空节点,返回null,递归开始回退}//先根据先序遍历创建根节点TreeNode root new TreeNode(postorder[i]);//找到当前根节点,在中序遍历的位置int rootIndex findIndex(inorder, inBegin, inEnd, postorder[i]);i--;//递归先构建右树root.right create_a_binary_tree(postorder, inorder, rootIndex 1, inEnd);//递归后构建左树root.left create_a_binary_tree(postorder, inorder, inBegin, rootIndex - 1);//前序遍历完成,返回根节点return root;}private int findIndex(int[] inorder, int inBegin, int inEnd, int key) {for (int j inBegin; j inEnd; j) {if (inorder[j] key) {return j;}}return -1;} } 运行结果 题目链接: https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/submissions/ 完结撒花✿✿ヽ(°▽°)ノ✿✿
http://www.hkea.cn/news/14559211/

相关文章:

  • 网站如何做的有特色在linux上做网站搭建
  • c# asp.net网站开发书网络营销主要做些什么
  • 网站建设甲方给乙方的需求方案电子商务网站建设与管理实训报告
  • 在线课程软件网站建设费用网站制作公司兴田德润怎么联系
  • 在线网站软件免费下载安装重庆玻璃制作厂家
  • 公司做网站留言板商城服务是什么平台
  • wui网站建设开源免费cms可商业用
  • 网站建设帮助中心哈尔滨建立网站公司
  • 图书馆 网站开发 总结c 做的网站怎么上传图片
  • 网站续费贵是重新做个好还是续费mvc做门户网站
  • 烟台网站建设烟台用thinksns做的网站
  • 怎么给网站动态做伪静态wordpress xrea
  • 美塔基500元做网站可信吗怎么生成网站源代码
  • 做网站工商局要不要备案呢百度收录什么网站吗
  • wordpress建立移动站建网站 是否 数据库
  • 上海做网站去哪里基于h5的移动网站开发
  • 网站制作报价图片欣赏高端大气的网络公司名称
  • 山东seo网络推广苏宁网站优化与推广
  • 直接找高校研究生做网站行吗南昌建站模板
  • 单县网站开发江苏建设主管部门网站
  • 网站上线要多久做视频添加字幕的网站
  • 建设电瓶车官方网站it网站建设方案
  • 高校网站群建设方案wordpress编辑页面打开慢
  • 建站之家官网网站开发的推荐
  • 怎么用flash做游戏下载网站网站吸流量
  • 网站建设好怎么发布网站关键词优化排名软件
  • 好的案例展示网站wordpress 美化插件
  • 怎么将公司网站设成首页济南市住房与城乡建设厅网站
  • 英文网站建设 淮安无锡知名网站
  • 延吉制作网站怎么给自己做网站