113. 路径总和 II
发布日期:2021-05-24 19:48:33 浏览次数:20 分类:精选文章

本文共 1041 字,大约阅读时间需要 3 分钟。

下面是优化后的代码描述:


const hasPathSum = function (root, targetSum) {    if (!root) {        return [];    }    const results = [];    const stack = [[root, root.val, [root.val]]];    while (stack.length > 0) {        const [currentNode, currentSum, path] = stack.pop();        if (currentNode.right) {            stack.push([currentNode.right, currentSum + currentNode.right.val, [...path, currentNode.right.val]]);        }        if (currentNode.left) {            stack.push([currentNode.left, currentSum + currentNode.left.val, [...path, currentNode.left.val]]);        }        if (!currentNode.left && !currentNode.right) {            if (currentSum === targetSum) {                results.push(path);            }        }    }    return results;};

代码解释:

  • 函数定义:定义了一个名为hasPathSum的函数,接收两个参数:二叉树的根节点root和目标和targetSum
  • 基础检查:如果根节点为空,直接返回空数组。
  • 初始化栈:建立了一个栈,初始时存储根节点的相关信息,包括节点、节点的值和当前路径数组。
  • 栈处理:进入循环处理栈中的每个节点:
    • 右子节点处理:检查右子节点,如果存在,将右子节点的值和路径添加到栈中,路径采用左后右前顺序。
    • 左子节点处理:同理,检查左子节点的值和路径。
    • 叶子节点检查:当处理到叶子节点时,检查当前路径的和是否等于目标和,如果是,将路径加入结果数组。
  • 返回结果:循环结束后,返回所有满足条件的路径数组。
  • 上一篇:437. 路径总和 III
    下一篇:112. 路径总和(Javascript)

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年05月08日 00时39分24秒