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

流量型网站 cmswifi小程序源码

流量型网站 cms,wifi小程序源码,平度那里有做网站的,广告联盟网站怎么做Leetcode 112: 路径总和 问题描述#xff1a; 给定一个二叉树的根节点 root 和一个目标和 targetSum#xff0c;判断是否存在从根节点到叶子节点的路径#xff0c;使路径上所有节点的值相加等于目标和 targetSum。 适合面试的解法#xff1a;递归 解法特点#xff1a; …Leetcode 112: 路径总和 问题描述 给定一个二叉树的根节点 root 和一个目标和 targetSum判断是否存在从根节点到叶子节点的路径使路径上所有节点的值相加等于目标和 targetSum。 适合面试的解法递归 解法特点 递归是解决路径和问题的最优实现方式利用二叉树的递归性质逐步处理每条可能的路径。对每个节点递归减去当前节点的值直到叶子节点时检查剩余的 targetSum 是否为零。时间复杂度 (O(n))空间复杂度 (O(h))(h) 为树的高度递归栈的深度非常适合面试场景。 解法思路 核心步骤 递归分治 当前节点的路径总和由其左子树和右子树是否有满足条件的路径决定。每次递归将 targetSum 减去当前节点的值抵达叶子时检查剩余的和。 判断叶子节点 如果当前节点是叶子节点无左子节点也无右子节点同时路径总和符合 targetSum返回 true。 递归终止条件 如果当前节点为 null返回 false。叶子节点时检查 targetSum 是否与节点值相等。 最终逻辑 对每个节点递归判断它的左子树和右子树是否满足条件。 代码模板递归法 class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {// Step 1: 如果节点为空返回 falseif (root null) {return false;}// Step 2: 如果节点是叶子节点检查是否路径总和满足条件if (root.left null root.right null) {return root.val targetSum;}// Step 3: 减去当前节点值从左右子树递归查找路径和int remainingSum targetSum - root.val;return hasPathSum(root.left, remainingSum) || hasPathSum(root.right, remainingSum);} }代码详细注释 class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {// Step 1: 递归终止条件// 如果当前节点为 null没有路径可以满足条件返回 falseif (root null) {return false;}// Step 2: 检查叶子节点// 如果当前节点是叶子节点无左右子节点检查路径总和是否满足 targetSumif (root.left null root.right null) {return root.val targetSum; // 如果满足条件返回 true}// Step 3: 递归处理子树// 更新剩余的路径总和递归查找左右子树int remainingSum targetSum - root.val;boolean leftResult hasPathSum(root.left, remainingSum); // 检查左子树路径总和boolean rightResult hasPathSum(root.right, remainingSum); // 检查右子树路径总和// Step 4: 返回结果// 如果任意一个子树满足路径总和条件返回 truereturn leftResult || rightResult;} }复杂度分析 时间复杂度 每个节点最多被访问一次时间复杂度为 (O(n))其中 (n) 是树的节点总数。 空间复杂度 递归栈的深度与树的高度相关 平衡二叉树的高度为 (O(\log n))空间复杂度为 (O(\log n))。完全不平衡二叉树链表状的高度为 (O(n))空间复杂度为 (O(n))。 测试用例 示例 1 输入 root [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum 22输出 true解释 从根节点到叶子节点的一条路径 5 → 4 → 11 → 2 的总和等于 22。 示例 2 输入 root [1,2,3], targetSum 5输出 false解释 树中任意路径的总和都不等于 5。 示例 3 输入 root [], targetSum 0输出 false如何快速 AC面试技巧 1. 树的递归分治思想 每个节点的路径和问题可以归结为子树的路径和问题递归很自然地处理二叉树。 2. 判断叶子节点的条件 特别强调叶子节点的判断逻辑必须满足“无左右子节点”且“路径和符合目标 sum”。 3. 时间复杂度分析 (O(n))每节点访问一次这是二叉树递归常见的复杂度。空间复杂度根据树的高度合理优化。 4. 全局逻辑清晰表达 用递归逻辑分解问题每一层会贡献新的 targetSum剩余路径和。 其他解法 方法 2迭代法使用栈 思路 使用栈实现递归的效果根据路径累加值判断是否符合 targetSum。 代码模板 import java.util.*;class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {if (root null) return false; // 如果树为空直接返回 false// 初始化栈用于模拟递归逻辑StackTreeNode nodeStack new Stack();StackInteger sumStack new Stack();nodeStack.push(root);sumStack.push(targetSum);// 遍历节点while (!nodeStack.isEmpty()) {TreeNode currentNode nodeStack.pop();int currentSum sumStack.pop() - currentNode.val;// 如果是叶子节点检查路径是否满足条件if (currentNode.left null currentNode.right null currentSum 0) {return true;}// 将左右子节点入栈更新路径和if (currentNode.right ! null) {nodeStack.push(currentNode.right);sumStack.push(currentSum);}if (currentNode.left ! null) {nodeStack.push(currentNode.left);sumStack.push(currentSum);}}return false;} }对比递归与迭代 解法时间复杂度空间复杂度适用场景递归法(O(n))(O(h))简单树结构逻辑直观迭代法(O(n))(O(h))栈存储深度较大的树避免递归栈溢出 推荐解法递归法 适合面试场景 递归法易于实现逻辑直观时间复杂度和空间复杂度表现良好。 总结如何快速 AC 使用递归实现树的递归逻辑清晰。判断叶子节点时特别强调路径和条件。时间复杂度和空间复杂度分析简洁明了边界处理完整。 通过递归方法你可以快速实现并解决问题同时展示对二叉树递归的掌握非常适合面试场景
http://www.hkea.cn/news/14396036/

相关文章:

  • 长春建设厅网站首页软件it网站建设方案
  • 南宁定制建站站长网网站模板
  • 网站建设pc指什么济南网站seo优化
  • 福州建网站哪家好网站规划书包括哪些方面
  • 网站建设教程(任务2签订网站建设合同)题库可拖拽 网站建设
  • 在线解压rar网站江苏省工程建设信息官方网
  • 马可波罗网站做外贸重庆做的好的房产网站
  • 微信制作网站做网站选什么配置电脑
  • 怎么做产品网站推广东莞市交易中心网
  • 杭州萧山做网站济宁网站建设方面
  • 奉贤集团公司网站建设沂水网站开发
  • 做gif动态图网站wordpress移动端底部广告
  • 涪陵区小城镇建设管理处网站wordpress 图片显示慢
  • 嘉峪关网站建设设计人才网官网
  • 深圳市做网站的济南网站建设方案
  • 成都专业建设网站企业品牌战略策划
  • 有什么好的网站查做外贸出口的企业如何建设网站zy258
  • 网页源代码怎么打开快捷键江门seo哪家专业
  • 高端定制网站镇江网站建设个
  • 中国哪家做网站的公司最大wordpress二次主题
  • 水果电商网站开发方案wordpress注册直接显示密码错误
  • 更改域名代理商对网站有影响吗手机网站公司哪家好
  • 桂林北站改造河南建设工程信息网官网首页
  • 手机上有趣的网站wordpress新建页面位置
  • 企业网站关键词优化排名应该怎么做discuz自适应模板
  • 有效的网站建设住房建设部官方网站办事大厅
  • 唐山网址建站2345网址导航手机版下载
  • 天猫网站左侧菜单向右滑出的导航菜单网页游戏排行榜前十名评论
  • 手机网站导航插件自助建站原理
  • 房屋租赁网站建设管理wordpress metro手机主题