본문 바로가기

[ leetcode ]

101. Symmetric Tree

반응형
SMALL

루트 노드를 기준으로 양쪽 노드가 거울을 바라보고 있는 형태를 띄는지 bool 값으로 결과를 보여라.

 


 

solution 1. 

왼쪽 노드와 오른쪽 노드를 재귀로 비교할 수 있다.

왼쪽 노드와 오른쪽 노드가 둘 다 없을 경우 양쪽이 동일한 경우니까 True를 리턴하고 왼쪽, 오른쪽 중 한 곳만 존재하지 않을 경우 False를 리턴한다.

그리고 왼쪽 오른쪽 노드의 값이 같고 왼쪽 오른쪽을 바꿔서 재귀를 하여 나온 결과가 서로 같을 경우 왼쪽과 오른쪽이 같다는 것이므로 True를 리턴한다. 

그리고 그 외의 경우도 False를 리턴한다.

 

class Solution:
    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        
        def same(R, L):
            if R is None and L is None:
                return True
            if R is None or L is None:
                return False
            if R and L:
                return R.val == L.val and same(R.left, L.right) and same(R.right, L.left)
            return False

        if not root:
            return True
            
        return same(root.left, root.right)

 

반응형
LIST

'[ leetcode ]' 카테고리의 다른 글

141. Linked List Cycle  (0) 2023.01.01
118. Pascal's Triangle  (0) 2022.12.27
94. Binary Tree Inorder Traversal  (0) 2022.12.18
88. Merge Sorted Array  (0) 2022.12.18
69. Sqrt(x)  (0) 2022.12.17