Sum Root to Leaf Numbers

Sett·2021년 7월 20일
1

문제

https://leetcode.com/problems/sum-root-to-leaf-numbers/

문제 접근

  1. DFS 여서 인접 행렬로 만들고 하나의 큐와 하나의 스택으로 풀어야 겠다
  2. input = [1,2,3,4,5]이 이렇게 생겨서 주어진 배열을 인접 행렬로 만드는 작업이 필요한가 의문이 들었음.
  3. 2가 아니고 그냥 Tree를 만들어서 주더라. 재귀로 풀기로 생각함.
  4. DFS 재귀 호출하는 방식만 따지면 됐는데,
  5. 트리를 탐색할 때 아래의 트리에서 1,2,3 그리고 4 이렇게 탐색하면 되는데 1,2,3 한번 1,2,4 한번 이렇게 탐색하려고 하니까 문제가 잘 안풀렸다. 그냥 1,2,3 탐색한 후 4도 탐색해서 합에 반영해주면 되는 문제였는데

결론. 5와 같은 방식으로 해결

소스 코드

func sumNumbers(_ root: TreeNode?) -> Int {
    
    return sumDFS(node: root, curNum: 0)
}

func sumDFS(node: TreeNode?, curNum: Int) -> Int {
    let curNum = 10 * curNum + node!.val

    if node?.left == nil, node?.right == nil {
        return curNum
    }
    
    var sum = 0
    
    if node?.left != nil {
        sum += sumDFS(node: node?.left, curNum: curNum)
    }
    
    if node?.right != nil {
        sum += sumDFS(node: node?.right, curNum: curNum)
    }
    
    return sum
}
profile
안녕하세요

0개의 댓글

관련 채용 정보