Leetcode Note: Go - Path Sum

Path Sum - LeetCode
https://leetcode.com/problems/path-sum/

  • Go 言語で取り組んだメモ

所感

  • わからん

実装準備

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func hasPathSum(root *TreeNode, targetSum int) bool {
    
}

回答

20ms simple Golang solution - LeetCode Discuss
https://leetcode.com/problems/path-sum/discuss/36492/20ms-simple-Golang-solution

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func hasPathSum(root *TreeNode, sum int) bool {
    if root == nil {
		return false
	}
    if root.Left == nil && root.Right == nil {
		return root.Val == sum
	}
	return hasPathSum(root.Left, sum-root.Val) || hasPathSum(root.Right, sum-root.Val)
}
  • root の nil チェック
  • left と right が nil なら val を sum とする
  • hasPathSum を再帰呼び出し
    • left と sum - root.val
    • right と sum - root.val
    • どちらか一方でも true を return すれば OK