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

长沙网站开发在线咨询自己制作网页查询系统

长沙网站开发在线咨询,自己制作网页查询系统,红桥天津网站建设,怎么在自己做的网站上发视频教程题目描述 106. 从中序与后序遍历序列构造二叉树 中等 1.1K 相关企业 给定两个整数数组 inorder 和 postorder #xff0c;其中 inorder 是二叉树的中序遍历#xff0c; postorder 是同一棵树的后序遍历#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入#xff1…题目描述 106. 从中序与后序遍历序列构造二叉树 中等 1.1K 相关企业 给定两个整数数组 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 3000postorder.length inorder.length-3000 inorder[i], postorder[i] 3000inorder 和 postorder 都由 不同 的值组成postorder 中每一个值都在 inorder 中inorder 保证是树的中序遍历postorder 保证是树的后序遍历 思路讲解 后续遍历左 右 中 中序遍历左 中 右 假设没有重复值的节点 如果有那就不会是种二叉树 你可以将重复节点挨个遍历 依次确定所有二叉树 那么后续排序就可以确定这颗二叉树的根节点 再在中序排序中找到该值根节点 将中序遍历分为三部分 左子树的中序遍历 根节点 右子树的中序遍历  将后序遍历分为三部分 左子树的后续遍历 右子树的后续遍历 根节点 经过上面的处理 不能形成一颗完整的二叉树 因为里面有左右子树还没有确定其根节点 那么就要再进行上 面的操作 直到将左右子树全部确定完毕  需要递归进行处理 也可以模拟递归 用栈去模拟递归  结合上面思路先大致想一想递归代码的实现 代码部分处理 /**//树的节点* Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { public:TreeNode* func1(vectorint inorder,vectorint postorder)//递归{//postorder.size()inorder.size()if(postorder.size()0){return nullptr;}int val postorder[postorder.size()-1];TreeNode* root new TreeNode(val);//创建节点int index 0;//寻找中序的根节点for(;indexinorder.size();index){if(inorder[index]val){break;}}//postorder.size()inorder.size()if(postorder.size()1){return root;}postorder.resize(postorder.size()-1);//左闭右开区间 区间端点就是函数参数vectorint leftinorder(inorder.begin(),inorder.begin()index);vectorint rightinorder(inorder.begin()index1/*1就是将中序的根节点舍弃掉*/,inorder.end());vectorint leftpostorder(postorder.begin(),postorder.begin()leftinorder.size());vectorint rightpostorder(postorder.begin()leftinorder.size(),postorder.end());//递归调用root-leftfunc1(leftinorder,leftpostorder);root-rightfunc1(rightinorder,rightpostorder);return root;}TreeNode* buildTree(vectorint inorder, vectorint postorder) {if(inorder.size()0||postorder.size()0)//特殊条件的判断{return nullptr;}return func1(inorder,postorder);} }; 递归调用部分 需要对递归有一点了解 不然你就在纸上走读代码 去画递归展开图 调用左树就执行到底之后再进左树调用中的右树调用 再进右树调用还是先执行左树调用再执行右树调用 因为左树调用在右树调用的前面
http://www.dnsts.com.cn/news/117847.html

相关文章:

  • 济南经三路专业做网站莒县网站建设
  • 高端产品网站建设wordpress纯静态网站
  • 郑州手机端网站建设wordpress邀请码
  • 空包网站建设网站广告图片在线制作
  • 网站免费正能量直接进入搜索引擎收录查询
  • 浙江专业网站seo网站申请微信登录
  • 房地产门户网站建设网站建设合同需注意什么
  • seo建站的步骤前端开发培训机构哪个好
  • 东莞微信网站制作京东当前网站做的营销活动
  • 最主流的网页制作软件外贸网站建设优化
  • linux建设网站网站什么时候做等保
  • 外贸网站推广seo信用网站建设成效
  • 昆明微信网站建设千万不要去做房地产销售
  • 网站目录层级建设网站没权重
  • 建设网站五个步骤美发网站带手机版
  • 用DW做的网站怎么弄成链接WordPress的站内地图
  • 新手用什么框架做网站比较好哈尔滨网站建设有限公司
  • 手机网站用什么软件什么直播软件可以看那个东西
  • 网页ui设计分析焦作网站seo
  • 网站开发培训多少钱兰州有什么互联网公司
  • 电商网站分析福州定制网站开发制作
  • 有没有免费网站建设房地产网站建设内容
  • 网站开发人员的要求怎么做推销产品的网站
  • 枣庄手机网站开发公司微商城开发公司有哪些比较好
  • 做网站需要注意多少页app软件下载安装到手机
  • ps做汽车网站下载素描网站怎么做
  • 织梦网站后台地址佛山营销型网站设计
  • 自己用笔记本做网站好看的知名企业网站
  • 揭阳网站建站网站科技网站推荐
  • 做视频网站要注意什么上海注册公司引流v信xiala5