LeetCode112 路径总和

LeetCode112 路径总和

  • 题目
  • 解题
    • 解题一:深度优先搜索
    • 解题二:广度优先搜索

题目

LeetCode112 路径总和_第1张图片
LeetCode112 路径总和_第2张图片

题目 解题
112. 路径总和 深度优先+广度优先搜索
113. 路径总和 II 深度优先+广度优先搜索
437. 路径总和 III 深度优先+前缀和
666. 路径总和 IV 深度优先搜索

解题

LeetCode112 路径总和_第3张图片

解题一:深度优先搜索

LeetCode112 路径总和_第4张图片

// javascript
var hasPathSum = function(root, targetSum) {
    if (root === null) return false;
    if (root.left === null && root.right === null) return root.val === targetSum;
    targetSum -= root.val;
    return hasPathSum(root.left, targetSum) || hasPathSum(root.right, targetSum);
};

LeetCode112 路径总和_第5张图片

解题二:广度优先搜索

在这里插入图片描述

// javascript
var hasPathSum = function(root, targetSum) {
    if (root === null) return false;
    const queue_node = [root], queue_val = [root.val];
    while (queue_node.length > 0) {
        const node = queue_node.shift();
        const sum = queue_val.shift();
        if (node.left === null && node.right === null) {  // 叶子节点
            if (sum === targetSum) return true;
            else continue;
        }
        if (node.left !== null) {
            queue_node.push(node.left);
            queue_val.push(sum + node.left.val);
        }
        if (node.right !== null) {
            queue_node.push(node.right);
            queue_val.push(sum + node.right.val);
        }
    }
    return false;
};

LeetCode112 路径总和_第6张图片

你可能感兴趣的:(刷题笔记,树,二叉树,深度优先搜索,广度优先搜索)