반응형

 

이번 문제는 주어진 트리의 각 depth 별로 수를 수집하여 List<List> 형식으로 반환해야합니다.

 

반환 값은 left -> right 로 숫자가 있어야 하며, 맨 아래 depth 의 값부터 들어있어야합니다.

 

저는 depth 값을 같이 넘겨주며, 트리를 모두 탐색하도록 하였습니다.

그리고, 마지막으로는 완성된 List를 reverse하도록 했습니다.

 

코드는 아래와 같습니다.

 

from typing import List


class TreeNode:
    def __init__(self, x):
        self.val = x
        self.right = None
        self.left = None

class Solution:

    def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
        if root == None: return []
        if root.right == None and root.left == None: return [[root.val]]

        res = [[root.val]]
        depth = 0
        self.find(root.left, depth + 1, res)
        self.find(root.right, depth + 1, res)
        res.reverse()
        return res

    def find(self, root: TreeNode, depth: int, res: List[List[int]]):
        if root == None: return
        if root != None:
            if len(res) <= depth:
                res.insert(depth, [root.val])
            else:
                res[depth].append(root.val)

        self.find(root.left, depth + 1, res)
        self.find(root.right, depth + 1, res)

 

감사합니다.

반응형

+ Recent posts