[LeetCode] 112. Path Sum

Joohyun·2021년 7월 21일

Algorithm

목록 보기
15/16
post-thumbnail

문제 링크

https://leetcode.com/problems/path-sum/

제출코드

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} targetSum
 * @return {boolean}
 */
var hasPathSum = function(root, targetSum) {
    if (root === null) { return false }
    let sum = 0
    let answer = false
    function dfs (tree, sum) {
        if (tree.left === null && tree.right === null) {
            sum += tree.val
            if (sum === targetSum) {
                answer = true
            }
            return
        } else {
            sum += tree.val
            if (tree.left !== null) { dfs(tree.left, sum) }
            if (tree.right !== null) { dfs(tree.right, sum) }
        }
    }
    dfs(root, 0)
    return answer
};

풀이방법

왼쪽 노드부터 모두 탐색 후 오른쪽 노드를 탐색한다 (dfs)
왼쪽과 오른쪽 자식노드가 모두 없는 경우는 제일 하위에 있는 노드이므로 주어진 조건에 맞는지 확인 후 return

profile
#Frontend Developer #Vue #Javascript #Typescript

0개의 댓글