[1스4코2파] # 208 LeetCode 199. Binary Tree Right Side View

gunny·2023년 7월 31일
0

코딩테스트

목록 보기
209/530

[1스4코2파] 1명의 스위프트 개발자와 4명의 코틀린 개발자, 2명의 파이썬 개발자코딩 테스트 서막 : 1스4코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능

START :

[3코1파] 2023.01.04~ (208차)
[4코1파] 2023.01.13~ (200일차)
[1스4코1파] 2023.04.12~ (111일차)
[1스4코2파] 2023.05.03 ~ (89일차)

Today :

2023.07.31 [209일차]
Tree
199. Binary Tree Right Side View

199. Binary Tree Right Side View

https://leetcode.com/problems/binary-tree-right-side-view/description/

문제 설명

트리 노드의 오른쪽 시선에서 봤을 때 보이는 트리 노드의 val 값을 return 해야 한다
처음에는 right node의 val을 넣는 건줄 알고 개 헛짓했던 것이다.
양씨가 도와줬던 것이다.

문제 풀이 방법

queue를 이용해서 bfs로 내려가면서 node가 있으면 node의 val 값을 넣고
left, right를 모두 queue에 넣으면서 순서대로 pop 한다.
left, right에 해당하는 노드의 val을 담고 depth 가 끝나면, 그 depth의 가장 마지막에 담긴 val 값만 answer에 넣어준다.

내 코드

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

class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        ans = []
        queue = collections.deque()
        queue.append(root)

        while queue:
            qLen = len(queue)
            level = []
            for i in range(qLen):
                node = queue.popleft()
                if node:
                    level.append(node.val)
                    queue.append(node.left)
                    queue.append(node.right)

            print(level)

            if level:       
                ans.append(level[-1])

        return ans

증빙

여담

굿ㅋ

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글