[1스4코2파] # 160. LeetCode Pattern 100. Same Tree

gunny·2023년 6월 12일
0

코딩테스트

목록 보기
161/530

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

Rule :

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

START :

[3코1파] 2023.01.04~ (160차)
[4코1파] 2023.01.13~ (152일차)
[1스4코1파] 2023.04.12~ (63일차)
[1스4코2파] 2023.05.03 ~ (42일차)

Today :

2023.06.12 [160일차]
LeetCode Patterns
100. Same Tree
https://leetcode.com/problems/same-tree/

100. Same Tree

https://leetcode.com/problems/same-tree/

문제 설명

binary Trees 이진 트리 구조가 두개 주어지는데, 각 두 개가 같은 형태로 동일 원소를 가졌으면 True, 아니면 False를 return 함

문제 풀이 방법

논리 연산자로 풀었는데 (물론 내가 아니고 옆자리사람이 풀었음)

일단 어떻게 돌아가야겠다라고는 생각을 했는데 이걸 이제 연산자로 샤샥 짧게는 못했던 그런...

내려가면서 확인해야 하는것이 (1) 두 노드의 값이 같은가, 다른가 (2) 두 노드에 왼쪽, 오른쪽 노드 유무

그래서 해당 조건들에 대한 True, Retrun을 써준다..

첫번째로, 노드가 둘 다 없다면 같은 케이스 이므로 True
두번째로, 두 노드 중 한 쪽노드만 왼쪽이 있으면 False
두 노드 중 오른쪽 노드만 있다면 False
세번째로, 두 노드가 둘 다 있을 때, 원소 값 vale 이 같으면 True, 다르다면 False 이다.

내 코드

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
        
class Solution:
    def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
        if not q and not p:
            return True
        if not q or not p or q.val != p.val:
            return False
        
        return self.isSameTree(p.left, q.left) & self.isSameTree(p.right, q.right)

증빙

여담

집가고싶네

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

0개의 댓글