/
uizadcz
/
Algorithm
Обзор
Документация
Войти
/
uizadcz
/
Algorithm
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
SumRootToLeafNumbers.kt
58 строк
2 KB
uizadcz
SumRootToLeafNumbers.kt
20 июн 2024, 14:36
20 июн 2024, 14:36
21402b5
Код
Авторство
О чём код?
/** * https://leetcode.com/problems/sum-root-to-leaf-numbers/description/ * * You are given the root of a binary tree containing digits from 0 to 9 only. * * Each root-to-leaf path in the tree represents a number. * * For example, the root-to-leaf path 1 -> 2 -> 3 represents the number 123. * Return the total sum of all root-to-leaf numbers. Test cases are generated so that the answer will fit in a 32-bit integer. * * A leaf node is a node with no children. * * Example 1: * Input: root = [1,2,3] * Output: 25 * Explanation: * The root-to-leaf path 1->2 represents the number 12. * The root-to-leaf path 1->3 represents the number 13. * Therefore, sum = 12 + 13 = 25. * * Example 2: * Input: root = [4,9,0,5,1] * Output: 1026 * Explanation: * The root-to-leaf path 4->9->5 represents the number 495. * The root-to-leaf path 4->9->1 represents the number 491. * The root-to-leaf path 4->0 represents the number 40. * Therefore, sum = 495 + 491 + 40 = 1026. * * 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 sumNumbers(root: TreeNode?): Int { return goToNext(root) } fun goToNext(node: TreeNode?, value: Int = 0): Int { if (node == null) return 0 val newValue = value * 10 + node.`val` if (node.left == null && node.right == null) { return newValue } return goToNext(node.left, newValue) + goToNext(node.right, newValue) } }