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

免费做网站的好不好怎么做阿里国际网站的数据分析

免费做网站的好不好,怎么做阿里国际网站的数据分析,网络营销的概述,开源博客wordpressDay 43 题目描述 思路(这题第一次没做出来,看了题解后理解) 做法:哈希表递归 首先复习一下前序遍历和中序遍历, 前序遍历:中左右,这个不仅是遍历树的路线,同时对一个对于一个前序遍…

Day 43

题目描述

在这里插入图片描述

思路(这题第一次没做出来,看了题解后理解)

做法哈希表+递归
首先复习一下前序遍历和中序遍历,
前序遍历:中左右,这个不仅是遍历树的路线,同时对一个对于一个前序遍历的任意节点,存在这种关系如:
】 【该根的左子树】 【该根的右子树
中序遍历:左中右,同理如上,对于一个中序遍历的任意节点,存在这种关系如:
该根的左子树】【】【该根的右子树
好的这道题理解到这点就够,思路如下

  1. 根据前序遍历根总在最前面,确定一个根节点
  2. 根据这个根节点,在中序遍历中划分为左右两个子树
  3. 将该根的左孩子指向左子树的根,将该根的右孩子指向右子树的根
  4. 这样遍历前序序列结束,我们就能得到一棵完整的树

做法如下:由于我们取得根节点的值很容易,但是在中序遍历中找到这个根节点的序号很困难,于是事先用一个map(indexmap)存放每个节点对应的序号(这里主要是无重复元素)。

  1. 预存中序遍历中每个节点的序号到indexmap中
  2. 调用findroot(int[]preorder,int[]inorder,int preleft,int preright,int inleft,int inright),这里的preleft和preright是指前序遍历的范围,inleft和inright是指中序遍历的范围
  3. 以下介绍为这个函数的内容
  4. 首先判断前序遍历范围是否合法,不合法返回null
  5. 根据我们上面对前序遍历的复习,可知preleft指向的元素就是这个子树的根,通过indexmap查询这个根在中序遍历的序号in
  6. 根据这个根创建一个树节点
  7. 将它的左孩子指向root.left=findroot(preorder,inorder,preleft+1,preleft+in-inleft,inleft,in-1);,这里解释一下,preorder和inorder是前序遍历和后序遍历,(preleft+1,preleft+in-inleft)圈定的是前序遍历中左子树的范围,in-inleft的含义是找到左子树中的节点数量,(inleft,in-1)圈定的右子树的范围,in为根节点在中序遍历的序号,in-1就是中序遍历中左子树最后一个元素(具体看上面的中序遍历的复习)
  8. 同理将根节点的右孩子根据前序和中序规律指向。
  9. 最后就能得到整棵树
/*** 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 Map<Integer, Integer> indexMap;public TreeNode findroot(int[]preorder,int[]inorder,int preleft,int preright,int inleft,int inright){if(preleft>preright){return null;}//前序遍历第一个元素就是根int root_num=preleft;int in=indexMap.get(preorder[root_num]);TreeNode root=new TreeNode(preorder[root_num]);root.left=findroot(preorder,inorder,preleft+1,preleft+in-inleft,inleft,in-1);root.right=findroot(preorder,inorder,preleft+in-inleft+1,preright,in+1,inright);return root;}public TreeNode buildTree(int[] preorder, int[] inorder) {//做法就是找根做法int n=inorder.length;indexMap = new HashMap<Integer, Integer>();for(int i=0;i<n;i++){indexMap.put(inorder[i],i);}TreeNode root=findroot(preorder,inorder,0,n-1,0,n-1);return root;}
}
http://www.dtcms.com/wzjs/559920.html

相关文章:

  • 莆田网站建设优化石家庄设计网站公司
  • 网站建设数据库类型定制做网站技术
  • 外贸网站建设及优化ppt模块上海松江招聘网最新招聘
  • 专业网站制作网络公司常德网站建设全域云
  • 深圳网站设计设计h5小游戏源码大全
  • 贵州网站建设hsyunso济南建站免费模板
  • 张家港注册公司流程和费用seo技巧seo排名优化
  • 怎么在阿里巴巴网站做公司wordpress 什么值得买 我要爆料
  • 网站超市源码百度pc端网页版
  • 上海建站哪家好百度有网站建设吗
  • 国内专业网站设计优秀网站特点
  • 织梦怎么在本地编辑多个网站注册公司有什么风险吗
  • 蓬莱网站建设公司报价上海企业网站黄页
  • json取数据做网站wordpress教程百度云
  • 辽宁建设工程信息网官网新网站入口商标设计图案
  • 国别域名注册宁波seo服务推广
  • 做ppt一般在什么网站好乐清网站推广
  • 我来做煮官方网站青岛城乡建设部网站首页
  • 手机适配网站两个网站用一个空间
  • 网站开发服务税收编码创新创意产品设计作品
  • 网站自己怎么制作做性的视频网站
  • 网站的百度地图怎么做的想自己做个网站在哪里做
  • 建设网站的费用明细厂房验收 技术支持 东莞网站建设
  • 遨游网站建设有限公司网站用哪些系统做的比较好用
  • mip网站建设如何做漂亮的网站
  • 全国的网站建设链接交换平台
  • 北京网站设计 公司新鸿儒企业如何进行网络推广
  • dw网页设计图片轮播切换安卓优化大师官网
  • 有投标功能的网站怎么做用手机制作游戏的app软件
  • 网站建设研究的意义最新山西太原阳性