[LeetCode] 404. Sum of Left Leaves
[LeetCode] 404. Sum of Left Leaves の解答と解説
問題
https://leetcode.com/problems/sum-of-left-leaves/description/
解答
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def sumOfLeftLeaves(self, root: Optional[TreeNode]) -> int:
def dfs(root, isLeft):
if not root:
return 0
if not root.left and not root.right:
return root.val if isLeft else 0
return dfs(root.left, True) + dfs(root.right, False)
return dfs(root, False)
解説
- Depth-First Searchでそれぞれの葉ノードが右かどうかの判別と判別結果に応じた値の足し合わせを行う
- 右の葉ノードであるかの判別は親ノードからのみ可能なため、`isLeft`というプロパティを渡すことで判別している
- 関係のないノードであれば0を返すことで値を無視している