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

专业门户网站开发外贸是先做网站还是做阿里巴巴

专业门户网站开发,外贸是先做网站还是做阿里巴巴,重庆梁平网站建设哪家好,建设企业网站官方登录文章目录 引言一、路径总和 I(LeetCode 112)问题描述方法思路Java代码实现复杂度分析 二、路径总和 II(LeetCode 113)问题描述方法思路Java代码实现复杂度分析 三、路径总和 III(LeetCode 437)问题描述方法…

文章目录

    • 引言
    • 一、路径总和 I(LeetCode 112)
      • 问题描述
      • 方法思路
      • Java代码实现
      • 复杂度分析
    • 二、路径总和 II(LeetCode 113)
      • 问题描述
      • 方法思路
      • Java代码实现
      • 复杂度分析
    • 三、路径总和 III(LeetCode 437)
      • 问题描述
      • 方法思路
      • Java代码实现
      • 复杂度分析
    • 四、对比与总结
      • 方法对比
      • 总结
    • 五、示例验证
      • 路径总和II示例
      • 路径总和III示例

引言

路径总和系列是二叉树遍历中的经典问题,涵盖从基础递归到高级优化的多种解法。本文详细分析LeetCode中路径总和I、II、III的解题思路,并提供Java实现代码与优化技巧,帮助读者深入理解二叉树遍历与回溯算法的应用。


一、路径总和 I(LeetCode 112)

问题描述

判断二叉树中是否存在从根节点到叶子节点的路径,使得路径节点值之和等于给定目标数。

方法思路

  • 递归遍历:深度优先搜索(DFS)遍历每个节点。
  • 终止条件
    • 空节点直接返回false
    • 叶子节点判断当前剩余值是否等于节点值。
  • 递归逻辑:对左右子树递归检查剩余目标值。

Java代码实现

class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {if (root == null) return false;if (root.left == null && root.right == null) {return targetSum == root.val;}return hasPathSum(root.left, targetSum - root.val) || hasPathSum(root.right, targetSum - root.val);}
}

复杂度分析

  • 时间复杂度:O(n),每个节点访问一次。
  • 空间复杂度:O(n),递归栈深度在最坏情况下(树退化为链表)为n。

二、路径总和 II(LeetCode 113)

问题描述

找出所有从根节点到叶子节点路径和等于目标数的路径,返回路径列表。

方法思路

  • 回溯法:通过动态维护路径列表记录当前路径。
  • 关键步骤
    1. 添加当前节点到路径。
    2. 到达叶子节点时检查路径和。
    3. 递归返回前移除当前节点(回溯)。

Java代码实现

class Solution {public List<List<Integer>> pathSum(TreeNode root, int targetSum) {List<List<Integer>> result = new ArrayList<>();dfs(root, targetSum, new ArrayList<>(), result);return result;}private void dfs(TreeNode node, int remain, List<Integer> path, List<List<Integer>> result) {if (node == null) return;path.add(node.val);if (node.left == null && node.right == null && remain == node.val) {result.add(new ArrayList<>(path)); // 深拷贝路径} else {dfs(node.left, remain - node.val, path, result);dfs(node.right, remain - node.val, path, result);}path.remove(path.size() - 1); // 回溯}
}

复杂度分析

  • 时间复杂度:O(n),每个节点访问一次。
  • 空间复杂度:O(n²),存储所有路径的空间开销。

三、路径总和 III(LeetCode 437)

问题描述

统计路径和等于目标数的路径数量。路径方向必须向下,但起点和终点不限制。

方法思路

  • 前缀和+哈希表优化
    • 记录路径前缀和及其出现次数。
    • 若当前前缀和为currentSum,查找currentSum - target是否存在。
  • 回溯维护:递归后需清理当前前缀和,避免影响其他子树。

Java代码实现

class Solution {private int count = 0;private Map<Long, Integer> prefixMap = new HashMap<>();public int pathSum(TreeNode root, int targetSum) {prefixMap.put(0L, 1); // 初始化空路径dfs(root, 0L, targetSum);return count;}private void dfs(TreeNode node, long currentSum, int target) {if (node == null) return;currentSum += node.val;count += prefixMap.getOrDefault(currentSum - target, 0);prefixMap.put(currentSum, prefixMap.getOrDefault(currentSum, 0) + 1);dfs(node.left, currentSum, target);dfs(node.right, currentSum, target);prefixMap.put(currentSum, prefixMap.get(currentSum) - 1); // 回溯}
}

复杂度分析

  • 时间复杂度:O(n),每个节点访问一次。
  • 空间复杂度:O(n),哈希表存储前缀和。

四、对比与总结

方法对比

问题核心方法时间复杂度空间复杂度关键难点
路径总和 I递归遍历O(n)O(n)终止条件判断
路径总和 II回溯+路径记录O(n)O(n²)深拷贝与回溯逻辑
路径总和 III前缀和+哈希表O(n)O(n)前缀和统计与回溯维护

总结

  1. 路径总和I:基础递归应用,理解终止条件与递归分解。
  2. 路径总和II:掌握回溯法维护路径状态,注意深拷贝避免引用问题。
  3. 路径总和III:前缀和优化是核心,通过空间换时间避免重复计算。

五、示例验证

路径总和II示例

输入:

       5/ \4   8/   / \11  13  4/  \    / \7    2  5   1

目标值:22
输出:[[5,4,11,2], [5,8,4,5]]

路径总和III示例

输入:

      10/  \5   -3/ \    \3   2   11/ \   \
3  -2   1

目标值:8
输出:3(路径为5→3, 5→2→1, -3→11


通过系统化分析与代码实现,读者可深入掌握二叉树路径问题的多种解法,提升算法设计与优化能力。


文章转载自:

http://5W33NEqs.ryrgx.cn
http://3YL4AanK.ryrgx.cn
http://D1hnaPQt.ryrgx.cn
http://vDeO6bZe.ryrgx.cn
http://4fJzxmIn.ryrgx.cn
http://dVJSO9bm.ryrgx.cn
http://WMnRfaoI.ryrgx.cn
http://UAA5mDt4.ryrgx.cn
http://8J5DbGGC.ryrgx.cn
http://ySXnxi2T.ryrgx.cn
http://0wfnMKKO.ryrgx.cn
http://sE5ZCWha.ryrgx.cn
http://k3hHbMHo.ryrgx.cn
http://qGP79Bbd.ryrgx.cn
http://7cBvx4pf.ryrgx.cn
http://7cCw2Cwi.ryrgx.cn
http://x710Q3Tw.ryrgx.cn
http://7WnGZj25.ryrgx.cn
http://LmGp0QtE.ryrgx.cn
http://NUYd37QN.ryrgx.cn
http://DjgGbKrr.ryrgx.cn
http://mYgs3NhO.ryrgx.cn
http://gMFciscD.ryrgx.cn
http://BjLLCAO0.ryrgx.cn
http://FZmCobC3.ryrgx.cn
http://2Q2gtRgf.ryrgx.cn
http://FGNke6qk.ryrgx.cn
http://DgqS4F9y.ryrgx.cn
http://9PHRAnt6.ryrgx.cn
http://wnMbLL4A.ryrgx.cn
http://www.dtcms.com/wzjs/690818.html

相关文章:

  • 泰州网页网站制作电商网站怎么做与众不同
  • 郑州手机端建站模板国家建设部网站证书查询
  • 做请帖的网站wordpress 插件 样式
  • 中国建设局网站招聘电商基础入门教程
  • 凡科免费建站怎么样企业网站怎么做推广比较好
  • 南京做网站公司地点搜索引擎营销原理
  • 网站建设方案 云盘wordpress 第一张图片
  • 安阳网站seo代理网络工具下载
  • 大型网站稳定性建设视频课程济南网络优化网站
  • 郑州网站提升排名广州建设交易中心官网
  • 做玻璃钢的企业网站vs做网站
  • 副业做网站程序网站建网站建设企业电话
  • 成都网站建设选择到访率山东网站建设哪家好
  • 网站源码上传完后怎么做收款后自动发货的网站是怎么做的
  • 怎么在ps里做网站设计网站建设与搜索引擎营销有什么关系
  • 金融网站织梦模板企业网页建设公司哪家比较好
  • 一元购网站的建设北京网站建设小公司有哪些
  • 邵武网站建设wzjseo素材网站哪个值得买
  • 更新网站怎么弄济南网站建设在哪里
  • 中心网站建设河南制作网站
  • 做网站用哪种语言好六安网站建设公司
  • 织梦cms网站迁移上海搜牛信息科技有限公司
  • asp网站开发教程百度云特效网站
  • 怎么用vs做网站旅行社酒店分销平台
  • 网站设计中的js是什么最好的小说网站排名
  • 网页设计与网站建设简答题短视频seo推广
  • 网站建设的结论和体会深圳网站哪家强
  • 下载app 的网站 如何做全国企业营业执照查询
  • 织梦做信息分类网站网站页脚代码
  • 哪个网站可以直接做ppt网站建设数据库的选择