美文网首页
2023-03-19 力扣112 基础路径总和

2023-03-19 力扣112 基础路径总和

作者: 爱玩游戏的iOS菜鸟 | 来源:发表于2023-03-18 17:38 被阅读0次
// 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。
// 题目来源:力扣(LeetCode)

// 指定数据结构
// function Tree(val, left, right) {
//   this.val = val === undefined ? 0 : val;
//   this.left = left === undefined ? null : left;
//   this.right = right === undefined ? null : right;
// }

// 第一种解法:递归
// 大问题转化为小问题
var hasPathSum1 = function (root, targetSum) {
  if (!root) {
    return 0;
  }
  if (targetSum == root.val && !root.left && !root.right) {
    return true;
  }
  return (
    hasPathSum(root.left, targetSum - root.val) ||
    hasPathSum(root.right, targetSum - root.val)
  );
};

// 第二种解法:深度优先
var hasPathSum2 = function (root, targetSum) {
  if (!root) {
    return false;
  }
  let result = false;
  function dfs(root, l) {
    if (!root) {
      return;
    }
    if (l == targetSum && !root.left && !root.right) {
      result = true;
    }
    if (root.left) {
      dfs(root.left, l + root.left.val);
    }
    if (root.right) {
      dfs(root.right, l + root.right.val);
    }
  }
  dfs(root, root.val);
  return result;
};

// 第三种解法:广度优先
var hasPathSum3 = function (root, targetSum) {
  if (!root) {
    return false;
  }
  const treeArray = [[root, root.val]];
  while (treeArray.length) {
    const [subTree, sum] = treeArray.shift()
    if (sum == targetSum && !subTree.left && !subTree.right) {
      return true;
    }
    if (subTree.left) {
      treeArray.push([subTree.left, sum + subTree.left.val]);
    }
    if (subTree.right) {
      treeArray.push([subTree.right, sum + subTree.right.val]);
    }
  }
  return false;
};

相关文章

  • LeetCode 力扣 112. 路径总和

    题目描述(简单难度) 给定一个sum,判断是否有一条从根节点到叶子节点的路径,该路径上所有数字的和等于sum。 解...

  • 【112】路径总和

    给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 使用递...

  • 回溯,贪心,动态规划

    1.回溯算法思想leetcode 112 号算法题:路径总和leetcode 113 号算法题:路径总和 IIle...

  • 112. 路径总和

    题目 解析 拿到这道题的第一个想法就是算出从根结点到叶子结点的和的所有情况然后比较是否和sum相同,所以肯定是要用...

  • Leet 112 路径总和

    Time: 2019-08-11 题目描述 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,...

  • 112. 路径总和

  • 112. 路径总和

    题目描述 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和...

  • Leetcode 112 路径总和

    路径总和 题目 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于...

  • 112. 路径总和

    题目描述 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和...

  • 112. 路径总和

    题目描述 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和...

网友评论

      本文标题:2023-03-19 力扣112 基础路径总和

      本文链接:https://www.haomeiwen.com/subject/jaterdtx.html