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

上海个人网站制作公司新的网站做淘宝客

上海个人网站制作公司,新的网站做淘宝客,正能量网站入口,服装高级定制品牌解题思路: 确定根节点: 前序遍历的第一个元素是当前子树的根节点。​分割中序数组: 在中序遍历中找到根节点的位置,其左侧为左子树的中序,右侧为右子树的中序。递归构造子树: 根据左子树的长度&#xff0c…

在这里插入图片描述

解题思路:

  1. 确定根节点: 前序遍历的第一个元素是当前子树的根节点。
  2. ​分割中序数组: 在中序遍历中找到根节点的位置,其左侧为左子树的中序,右侧为右子树的中序。
  3. 递归构造子树: 根据左子树的长度,分割前序数组,分别构造左子树和右子树。

Java代码:

class Solution {public TreeNode buildTree(int[] preorder, int[] inorder) {Map<Integer, Integer> inorderMap = new HashMap<>();for (int i = 0; i < inorder.length; i++)inorderMap.put(inorder[i], i);return buildHelper(preorder, 0, preorder.length - 1,inorder, 0, inorder.length - 1,inorderMap);}private TreeNode buildHelper(int[] preorder, int preStart, int preEnd,int[] inorder, int inStart, int inEnd,Map<Integer, Integer> inorderMap) {if (preStart > preEnd || inStart > inEnd) return null;int rootVal = preorder[preStart];TreeNode root = new TreeNode(rootVal);int rootIndex = inorderMap.get(rootVal);int leftSize = rootIndex - inStart;root.left = buildHelper(preorder, preStart + 1, preStart + leftSize,inorder, inStart, rootIndex, inorderMap);root.right = buildHelper(preorder, preStart + leftSize + 1, preEnd,inorder, rootIndex + 1, inEnd, inorderMap);return root;}
}

复杂度分析:

  • 时间复杂度: O(n),每个节点仅被处理一次,哈希表查询时间为 O(1),总共有 n 个节点。
  • 空间复杂度: O(n),递归栈的深度取决于树的高度,最坏情况下(链表树)为 O(n)。哈希表存储中序遍历的值到索引的映射,占用 O(n) 空间。

在这里插入图片描述

解题思路:

  1. 前缀和与哈希表: 维护一个哈希表 prefixSum,记录从根节点到当前路径的前缀和及其出现次数。初始化时存入 {0: 1},用于处理从根节点开始的路径。
  2. 递归遍历: 对每个节点,计算当前前缀和 currentSum。检查是否存在 currentSum - targetSum 在哈希表中,若存在则累加对应次数到结果。将当前前缀和加入哈希表,递归处理左右子树,回溯时撤销当前前缀和的记录。
  3. 路径灵活处理: 路径不需要从根开始或结束在叶子,但必须向下。通过哈希表动态维护当前路径的前缀和,确保路径连续性。

Java代码:

class Solution {private int result = 0;public int pathSum(TreeNode root, int targetSum) {Map<Long, Integer> prefixSum = new HashMap<>();prefixSum.put(0L, 1);dfs(root, 0, prefixSum, targetSum);return result;}private void dfs(TreeNode node, long currentSum, Map<Long, Integer> prefixSum, int targetSum) {if (node == null) return;currentSum += node.val;result += prefixSum.getOrDefault(currentSum - targetSum, 0);prefixSum.put(currentSum, prefixSum.getOrDefault(currentSum, 0) + 1);dfs(node.left, currentSum, prefixSum, targetSum);dfs(node.right, currentSum, prefixSum, targetSum);prefixSum.put(currentSum, prefixSum.get(currentSum) - 1);}
}

复杂度分析:

  • 时间复杂度: O(n),每个节点仅被访问一次,哈希表操作(插入、查询、删除)均为 O(1)。
  • 空间复杂度: O(n),递归栈的深度取决于树的高度 h(最坏情况为链状树,h = n)。O(n) 哈希表最多存储 n 个不同的前缀和(例如,当所有节点值唯一且路径和互不相同时)。
http://www.dtcms.com/wzjs/551247.html

相关文章:

  • 淘宝客网站免费做适合美工的网站
  • 百度联盟怎么做网站夫妻网络网站建设
  • h5网站建设价格站长工具seo综合查询收费吗
  • 郑州网站建设创业网站开发年薪
  • 黄图网站有哪些 推荐seo基础入门免费教程
  • 上海中学门户网站登陆wordpress整站密码
  • 成都建设银行网站焦作市网站建设公司
  • 品牌网站建设报价表网站建设方案策划书
  • 北京工商注册代理记账wordpress安全优化教程
  • 查域名网站闸北网站推广公司
  • 苏州网站推广软件十堰网站建设_网站制作_软件开发_网店培训 优易
  • 企业营销型网站策划务wordpress 系统找不到指定的文件.
  • 欢迎访问中国建设银行网站大足网站建设
  • 无锡网站制作企业wordpress改不了语言
  • wordpress的静态页面保存在哪里山东seo网络营销推广
  • 百度网站推广服务商做电子商务网站需要什么软件
  • 头条站长平台深圳招聘网站排名
  • 双语网站费用wordpress 默认登录地址
  • 网页设计模板的网站国内企业邮箱
  • 网站名字词wordpress 主题和插件
  • 高端网站建设系统php网站开发心得体会
  • 电子商务网站建设和推广松松软文
  • 自己怎么做公司网站建设一个网站可以放视频的多少钱
  • 莱芜四中网站wordpress图片优化插件
  • 网站实名认证 备案做视频网站 视频放在哪里找
  • php教育学校网站源码网页美工设计案例
  • 台州专业制作网站淄博网站客户
  • 珠海手机网站建设广州有专做网站
  • 网站模板中心宁远做网站msoer
  • 公司网站开发费用兴田德润官方网站宁德住房和城乡建设部网站