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

莱芜市城乡建设局网站首页如何把网站建设成营销型网站

莱芜市城乡建设局网站首页,如何把网站建设成营销型网站,哪个网站可以找人做橱柜,做网站公司哪里好1. 定义 二叉树是一种树形数据结构#xff0c;由节点组成#xff0c;每个节点最多有两个子节点#xff0c;分别为左子节点和右子节点。二叉树具有以下性质#xff1a; 每个节点最多有两个子节点#xff0c;称为左子节点和右子节点。 左子节点和右子节点可以为空#xff0…1. 定义 二叉树是一种树形数据结构由节点组成每个节点最多有两个子节点分别为左子节点和右子节点。二叉树具有以下性质 每个节点最多有两个子节点称为左子节点和右子节点。 左子节点和右子节点可以为空即一个节点没有子节点或只有一个子节点。二叉树的子树也是二叉树即每个子节点都可以看作是根节点构成一个新的二叉树。二叉树可以是空树即不包含任何节点的情况。二叉树的节点之间不存在环即不能通过任意路径从一个节点回到自身。 2. 遍历 二叉树的遍历主要有三种方式前序遍历、中序遍历和后序遍历。 前序遍历是根据【根-左-右】的顺序进行遍历即首先访问根节点然后访问左子树最后访问右子树。中序遍历是根据【左-根-右】的顺序进行遍历即首先访问左子树然后访问根节点最后访问右子树。后序遍历是根据【左-右-根】的顺序进行遍历首先访问左子树然后访问右子树最后访问根节点。 3. 节点结构定义 构建二叉树首先要构造二叉树的节点以下是二叉树节点的定义 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;} }在上述代码中我们定义了一个名为TreeNode的类包含了节点的值val、左子节点left、右子节点right三个成员变量。同时我们提供了三个构造方法分别用于创建空节点、只含值的节点和含值、左右子节点的节点。 4. 通过遍历结果生成二叉树 前提无重复值 1. 已知前中序遍历生成二叉树 力扣105 常用递归写法 将问题拆分为一个个子问题即将每个二叉树结点当作一个子问题来求解。 public TreeNode buildTree(int[] preorder, int[] inorder) {int n preorder.length;if(n 0){return null;}int leftSize indexOf(inorder,preorder[0]);int[] pre1 Arrays.copyOfRange(preorder,1,1leftSize);int[] pre2 Arrays.copyOfRange(preorder,1leftSize,n);int[] in1 Arrays.copyOfRange(inorder,0,leftSize);int[] in2 Arrays.copyOfRange(inorder,leftSize1,n);TreeNode left buildTree(pre1,in1);TreeNode right buildTree(pre2,in2);return new TreeNode(preorder[0],left,right); } public int indexOf(int[] inorder,int x){for(int i 0;i inorder.length;i){if(inorder[i] x){return i;}}return -1; }时间复杂度O(n^2)空间复杂度 O(n^2) 2. 在上述方法需要遍历整个集合求出根结点的下标时间复杂度为O(n)可以使用哈希表来进一步简化这一过程 public TreeNode buildTree(int[] preorder,int[] inorder){int n preorder.length;MapInteger,Integer index new HashMapInteger,Integer();for(int i 0;i n;i){index.put(inorder[i],i);}return dfs(preorder,0,n,inorder,0,n,index);}public TreeNode dfs(int[] preorder,int preL,int preR,int[] inorder,int inL,int inR,MapInteger,Integer index){if(preL preR){return null;}int leftSize index.get(preorder[preL]) - inL;TreeNode left dfs(preorder,preL 1,preL 1 leftSize,inorder,inL,inLleftSize,index);TreeNode right dfs(preorder,preL 1 leftSize,preR,inorder,inLleftSize 1,inR,index);return new TreeNode(preorder[preL],left,right);} 时间复杂度O(n)空间复杂度O(n) 2. 已知中后序遍历生成二叉树 力扣106 常用递归写法 首先要确定左子树的长度然后根据中后序遍历的特点进行节点划分。 public TreeNode buildTree(int[] inorder, int[] postorder) {int n inorder.length;if(n 0){return null;}int leftSize indexOf(inorder,postorder[n - 1]);int[] inL Arrays.copyOfRange(inorder,0,leftSize);int[] inR Arrays.copyOfRange(inorder,leftSize 1,n);int[] postL Arrays.copyOfRange(postorder,0,leftSize);int[] postR Arrays.copyOfRange(postorder,leftSize,n - 1);TreeNode left buildTree(inL,postL);TreeNode right buildTree(inR,postR);return new TreeNode(postorder[n-1],left,right);}public int indexOf(int[] arr,int x){int n arr.length;for(int i 0;i n;i){if(arr[i] x){return i;}}return -1;}时间复杂度O(n^2)空间复杂度 O(n^2) 3. 使用哈希表来进一步简化 public TreeNode buildTree(int[] inorder, int[] postorder) {int n inorder.length;HashMapInteger,Integer index new HashMapInteger,Integer();for(int i 0;i n;i){index.put(inorder[i],i);}return dfs(inorder,0,n-1,postorder,0,n-1,index);}public TreeNode dfs(int[] inorder,int inL,int inR,int[] postorder,int postL,int postR,HashMapInteger,Integer index){if(inL inR){return null;}if(inL inR){return new TreeNode(inorder[inL]);}int leftSize index.get(postorder[postR]) - inL;TreeNode left dfs(inorder,inL,inL leftSize - 1,postorder,postL,postL leftSize - 1,index);TreeNode right dfs(inorder,inL leftSize 1,inR,postorder,postL leftSize,postR - 1,index);return new TreeNode(postorder[postR],left,right);}时间复杂度O(n)空间复杂度O(n) 2. 已知前后序遍历生成二叉树 力扣889 常用递归写法 public TreeNode constructFromPrePost(int[] preorder, int[] postorder) {int n preorder.length;if(n 0){return null;}if(n 1){return new TreeNode(preorder[0]);}int leftSize indexOf(postorder,preorder[1]) 1;int[] preL Arrays.copyOfRange(preorder,1,leftSize 1);int[] preR Arrays.copyOfRange(preorder,leftSize 1,n);int[] postL Arrays.copyOfRange(postorder,0,leftSize);int[] postR Arrays.copyOfRange(postorder,leftSize,n-1);TreeNode left constructFromPrePost(preL,postL);TreeNode right constructFromPrePost(preR,postR);return new TreeNode(preorder[0],left,right);}public int indexOf(int[] arr,int x){int n arr.length;for(int i 0; i n;i){if(arr[i] x){return i;}}return -1;}时间复杂度O(n^2)空间复杂度 O(n^2) 2. 使用哈希表来进一步简化 public TreeNode constructFromPrePost(int[] preorder, int[] postorder) {int n preorder.length;HashMapInteger,Integer index new HashMapInteger,Integer();for(int i 0;i n;i){index.put(postorder[i],i);}return dfs(preorder,0,n-1,postorder,0,n-1,index);}public TreeNode dfs(int[] preorder,int preL,int preR,int[] postorder,int postL,int postR,HashMapInteger,Integer index){if(preL preR)return null;if(preL preR)return new TreeNode(preorder[preL]);int leftSize index.get(preorder[preL 1]) - postL 1;TreeNode left dfs(preorder,preL 1,preL leftSize,postorder,postL,postL leftSize - 1,index);TreeNode right dfs(preorder,preL leftSize 1,preR,postorder,postL leftSize,postR - 1,index);return new TreeNode(preorder[preL],left,right);}时间复杂度O(n)空间复杂度O(n) 5. 总结 通过前中、前后、中后遍历结果生成二叉树关键点在于确定左子树和右子树的边缘范围。
http://www.pierceye.com/news/204795/

相关文章:

  • 网站制作厂家电话多少女生学网络工程难吗
  • 网站建设要经历哪些步骤?网站建设岗位周计划
  • 贵阳网站制作工具福步外贸论坛网首页
  • 网站大全app下载任务发布平台
  • 专业商城网站建设哪家便宜河南做外贸网站的公司
  • seo博客网站东莞网络推广运营企业
  • 定制网站建设公司哪家好嘉兴网站建设多少时间
  • 快三竞猜网站建设wordpress 整站打包
  • 珠海好的网站制作平台微信音乐音频怎么关闭
  • asp.net 网站计数器响应式设计
  • 2017做那些网站致富小程序商城哪个平台好
  • 织梦制作网站如何上线做网站 当站长
  • 如何知道一个网站是用什么做的树莓派搭建wordpress
  • 怎么制作网站登录电子商务网上购物网站建设规划
  • 大连外贸网站制作做文案公众号策划兼职网站
  • 400网站建设推广通王网站内容管理系统
  • 上海专业网站制作开发wordpress 一级目录下
  • 要查询一个网站在什么公司做的推广怎么查济南集团网站建设报价
  • 手机静态网站建设课程设计报告形象型网站
  • 网站建设接单渠道百度网站内容
  • 企业网站pv是什么手机网站开发价格
  • 北京网站优化团队oppo开放平台
  • 购物商城外贸网站福州营销型网站建设公司
  • 白酒pc网站建设方案网站不符合个人备案性质
  • 做视频网站程序多少钱免费人体做爰网站
  • 做海外网站 服务器放哪网页设计师通常是设计两套ui吗
  • 海拉尔网站建设做html网站模板下载
  • 为什么网站找不到了东莞智通人才市场招聘官网
  • 如何注册网站名称中国煤炭建设协网站
  • 一个网站为什么做的不好看软件源码成品资源下载网站