Problem From.
https://leetcode.com/problems/sum-root-to-leaf-numbers/
오늘 문제는 tree 가 주어졌을때, root 부터 마지막 leaf 노드까지의 수를 String 형식으로 해서 숫자를 붙여나간뒤 마지막에 int 로 변환하여 더했을때, 그 합을 구하는 문제였다.
이 문제는 DFS 를 이용하여 풀 수 있었는데, 빈 list 를 하나 두고, 그 list 에 결과값들을 모두 모아둔 뒤 마지막에 더하는 식으로 풀 수 있었다.
/**
* 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 {
val list = mutableListOf<String>()
fun sumNumbers(root: TreeNode?): Int {
root ?: return 0
var answer = 0
DFS(root!!, root.`val`.toString())
list.forEach {
answer += it.toInt()
}
return answer
}
private fun DFS(node: TreeNode, num: String) {
if(node.left == null && node.right == null) list.add(num)
if(node.left != null) DFS(node.left, num + node.left.`val`.toString())
if(node.right != null) DFS(node.right, num + node.right.`val`.toString())
}
}