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

门户网站的建设方式有哪些微信网站需要一个域名要怎么做

门户网站的建设方式有哪些,微信网站需要一个域名要怎么做,义乌外贸公司联系方式,站内优化网站怎么做力扣labuladong一刷day30天二叉树 文章目录 力扣labuladong一刷day30天二叉树一、654. 最大二叉树二、105. 从前序与中序遍历序列构造二叉树三、106. 从中序与后序遍历序列构造二叉树四、889. 根据前序和后序遍历构造二叉树 一、654. 最大二叉树 题目链接:https://…

力扣labuladong一刷day30天二叉树

文章目录

      • 力扣labuladong一刷day30天二叉树
      • 一、654. 最大二叉树
      • 二、105. 从前序与中序遍历序列构造二叉树
      • 三、106. 从中序与后序遍历序列构造二叉树
      • 四、889. 根据前序和后序遍历构造二叉树

一、654. 最大二叉树

题目链接:https://leetcode.cn/problems/maximum-binary-tree/
思路:采用分解问题的方法,先构造父节点再构造左右子节点,每次都在指定区间内搜索,找到最大值后构造父节点,再划分左右区间递归。

class Solution {public TreeNode constructMaximumBinaryTree(int[] nums) {return traverse(nums, 0, nums.length - 1);}TreeNode traverse(int[] nums, int left ,int right) {if (left > right) return null;int max = -1, index = -1;for (int i = left; i <= right; i++) {if (nums[i] > max) {max = nums[i];index = i;}}TreeNode root = new TreeNode(max);root.left = traverse(nums, left, index-1);root.right = traverse(nums, index+1, right);return root;}
}

二、105. 从前序与中序遍历序列构造二叉树

题目链接:https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
思路:通过前序和中序构造二叉树,要维护好前序的区间以及中序的区间,先构造父节点再构造左右子节点,父节点是前序区间的left,左右子节点由递归返回。 此外要注意速度,想节省遍历中序数组寻找父节点索引的时间的话,可以使用map预先存储下来。

class Solution {Map<Integer, Integer> map = new HashMap<>();public TreeNode buildTree(int[] preorder, int[] inorder) {for (int i = 0; i < inorder.length; i++) {map.put(inorder[i], i);}return create(preorder, inorder, 0, preorder.length-1,0, inorder.length-1);}TreeNode create(int[] preorder, int[] inorder, int left1, int right1, int left2, int right2) {if (left1 > right1 || left2 > right2) return null;int midV = preorder[left1];TreeNode node = new TreeNode(midV);int index = map.get(midV);node.left = create(preorder, inorder, left1+1, left1+index-left2, left2, index-1);node.right = create(preorder, inorder, left1+index-left2+1, right1, index+1, right2);return node;}
}

三、106. 从中序与后序遍历序列构造二叉树

题目链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
思路:本题和上题类似,也是先构造父节点,然后再构造左右子节点,父节点由后续right构造,然后划分中序和后序的区间,递归构造左右子树。

class Solution {Map<Integer, Integer> map = new HashMap<>();public TreeNode buildTree(int[] inorder, int[] postorder) {for (int i = 0; i < inorder.length; i++) {map.put(inorder[i], i);}return create(inorder, postorder, 0, inorder.length-1, 0, postorder.length-1);}TreeNode create(int[] inorder, int[] postorder, int left1, int right1, int left2, int right2) {if (left1 > right1 || left2 > right2) return null;int midV = postorder[right2];int index = map.get(midV);TreeNode node = new TreeNode(midV);node.left = create(inorder, postorder, left1, index-1, left2, left2+index-left1-1);node.right = create(inorder, postorder, index+1, right1, left2+index-left1, right2-1);return node;}
}

四、889. 根据前序和后序遍历构造二叉树

题目链接:https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/
思路:通过前序和后序去构造二叉树,构造的结果不唯一,但方法是一样的,每次使用前序的left做为父节点,left+1做为左孩子的值,然后使用这个去后序中去划分区间,然后在划分前序遍历的区间,之后递归构造即可。

class Solution {Map<Integer, Integer> map = new HashMap<>();public TreeNode constructFromPrePost(int[] preorder, int[] postorder) {for (int i = 0; i < postorder.length; i++) {map.put(postorder[i], i);}return create(preorder, postorder, 0, preorder.length-1, 0, postorder.length-1);}TreeNode create(int[] preorder, int[] postorder, int left1, int right1, int left2, int right2) {if (left1>right1 || left2>right2) return null;if (left1 == right1) return new TreeNode(preorder[left1]);int mid = preorder[left1];int index = map.get(preorder[left1+1]);TreeNode node = new TreeNode(mid);node.left = create(preorder, postorder, left1+1, left1 + index-left2+1, left2,index);node.right = create(preorder, postorder, left1 + index-left2+2, right1,index+1, right2-1);return node;}
}
http://www.yayakq.cn/news/8894/

相关文章:

  • 推广网站概况个人的网站备案多少钱
  • 如何做一份企业网站中铁建设集团好进吗
  • wordpress做网页wordpress优化版
  • 手机网站横竖屏wordpress固定链接标签加上页面
  • 网站开发综合课程设计织梦cms通用蓝白简介大气企业网站环保科技公司源码
  • 做网站推销话术一直免费的服务器万能视频播放器
  • 企业网站管理的含义网站菜单实现原理
  • 网站建设项目教程wordpress添加html网页
  • 昌江县住房和城乡建设局网站wordpress首页显示链接
  • 产品设计排版网站干部网络培训平台
  • 杭州网站现场备案网站如何做才可以微信直接登录
  • 怎样提交网站百度收录旅游网站建设方案后台
  • wamp 做网站发布张家港网站seo
  • 搜索引擎大全网站中国企业信息网官网
  • 展示型网站自学软装设计该怎么入手
  • 公司注册郑州seo服务技术
  • 建设一个征婚网站的程序wordpress5.0样式
  • 同ip网站wordpress 上传apk
  • 企业网站开发公司大全手机购物网站 设计
  • 网站开发和软件开发含义php网站开发打不开
  • 南京模板网站建设网站cron
  • 黄酒的电商网页设计网站网站快速收录教程
  • ip地址信息备案管理系统seo服务是什么
  • 电力建设期刊网站经常维护吗网站建设手机登录密码是什么啊
  • 网站后台怎么兰州seo推广
  • 企业自助建站源码一级域名网站
  • 新泰网站建设成都网站制
  • 当今做网站的流行趋势网站移动排名
  • 做网站需要了解什么盗取dede系统做的网站模板
  • 励志做的很好的网站集团logo设计公司