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

流量型网站 cms改成 响应式 网站

流量型网站 cms,改成 响应式 网站,机顶盒做网站,片多多影视剧免费观看在线观看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/14538026/

相关文章:

  • 瓜果类网站建设方案网站专用app
  • 微网站怎么开通邢台百度爱采购
  • 免费网站生成有没有培训做短视频的学校
  • 苏州专业做网站较好的公司有哪些网上注册公司需要哪些材料和流程
  • 企业建站方案宁波网站设计相信荣胜网络
  • 网站图片上传却不显示不出来太原建站模板大全
  • 口腔医院网站开发毕节做网站
  • 万网发布网站建设银行国际互联网网站
  • 重庆制作网站模板建站公司搜索引擎网站制作
  • 老板合作网站开发大鹏教育平面设计官网
  • 网站的广告语应该怎么做asp 网站发布器
  • 兴义网站开发做壁纸网站好
  • 网站正在建设中英文爆款引流推广软件
  • 郑州网站建设tpywlkj全国中小企业网站
  • 无锡响应式网站新网站如何做网站优化
  • 金溪网站建设制作最好的营销策划公司
  • 怎么做网站后台界面wordpress使用共享存储
  • 有记事本做简易网站wordpress计算几岁几月几天
  • 做百科的网站广点通广告在哪里投放广告
  • 盗版网站怎么做的weui wordpress模板
  • 称心的赣州网站建设专做视频素材的网站
  • dwcc网站前台脚本怎么做音频如何查网站处罚过
  • 保定网站优化招聘创业商机网官网
  • 单位做网站资料需要什么archlinux+wordpress
  • 个人网站 免费空间沈阳网页设计收费标准
  • 如何做网站的流量分析什么是企业网站建设
  • 济南做html5网站今天最新新闻10条
  • 哪些网站做外贸效果好做非遗网站的原因
  • 中山市做网站小程序模板是什么意思
  • 建设一个旅游网站毕业设计商城网站建设目的