LeetCode in Kotlin

404. Sum of Left Leaves

Easy

Given the root of a binary tree, return the sum of all left leaves.

A leaf is a node with no children. A left leaf is a leaf that is the left child of another node.

Example 1:

Input: root = [3,9,20,null,null,15,7]

Output: 24

Explanation: There are two left leaves in the binary tree, with values 9 and 15 respectively.

Example 2:

Input: root = [1]

Output: 0

Constraints:

Solution

import com_github_leetcode.TreeNode

/*
 * Example:
 * var ti = TreeNode(5)
 * var v = ti.`val`
 * Definition for a binary tree node.
 * class TreeNode(var `val`: Int) {
 *     var left: TreeNode? = null
 *     var right: TreeNode? = null
 * }
 */
class Solution {
    fun sumOfLeftLeaves(root: TreeNode): Int {
        fun dfs(root: TreeNode?, left: Boolean): Int {
            root ?: return 0
            if (root.left == null && root.right == null) {
                return if (left) {
                    root.`val`
                } else {
                    0
                }
            }
            return dfs(root.left, true) + dfs(root.right, false)
        }

        return dfs(root, false)
    }
}