[LeetCode] 100. Same Tree

2021. 7. 5. 21:29·알고리즘 문제풀이/LeetCode
728x90

문제

기본 트리 문제이다.

TreeNode 클래스가 주어지며, 2개의 이진트리 p, q가 주어질 때 같은 트리인지 아닌지 확인하는 문제이다.

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

 

Same Tree - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

풀이

p와 q의 노드를 저장할 Queue를 생성한다. (pQueue, qQueue)

p와 q를 각각 Queue에 저장한다.

 

pQueue가 비어있을 때까지 다음을 반복한다.

1) pQueue와 qQueue의 노드를 하나씩 꺼낸다.

2) 노드가 둘다 null이면 (1)로 돌아간다.

3) 노드가 둘다 null이 아닌 경우 val이 같은지 확인하고, 꺼낸 노드의 left, right를 모두 각 Queue에 저장한다.

4) 둘 중 하나만 null인 경우 false를 리턴한다.

 

-> 이를 반복한 후 while에서 빠져나오면 같은 트리이므로 true를 리턴한다.

 

코드

public boolean isSameTree(TreeNode p, TreeNode q) {

        Queue<TreeNode> pQueue = new LinkedList<>();
        Queue<TreeNode> qQueue = new LinkedList<>();
        pQueue.add(p);
        qQueue.add(q);

        while (!pQueue.isEmpty()) {
            TreeNode pNode = pQueue.poll();
            TreeNode qNode = qQueue.poll();
            if (pNode == null && qNode == null)
                continue;
            if (pNode != null && qNode != null) {
                if (qNode.val != pNode.val) // value가 다른 경우
                    return false;
                pQueue.add(pNode.left);
                pQueue.add(pNode.right);
                qQueue.add(qNode.left);
                qQueue.add(qNode.right);
            } else { // 둘 중 하나만 null인 경우
                return false;
            }
        }
        return true;
    }
728x90

'알고리즘 문제풀이 > LeetCode' 카테고리의 다른 글

[LeetCode] 102. Binary Tree Level Order Traversal  (0) 2021.07.06
[LeetCode] 226. Invert Binary Tree  (0) 2021.07.05
[LeetCode] 104. Maximum Depth of Binary Tree  (0) 2021.07.04
[LeetCode] 70. Climbing Stairs  (0) 2021.06.10
[LeetCode] 322. Coin Change  (1) 2021.06.10
'알고리즘 문제풀이/LeetCode' 카테고리의 다른 글
  • [LeetCode] 102. Binary Tree Level Order Traversal
  • [LeetCode] 226. Invert Binary Tree
  • [LeetCode] 104. Maximum Depth of Binary Tree
  • [LeetCode] 70. Climbing Stairs
kiminae
kiminae
공부한 내용을 정리합니다.
  • kiminae
    데이터 다루는 사람
    kiminae
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • AI & 빅데이터 (6)
        • kafka (10)
        • [Book] 빅데이터를 지탱하는 기술 (12)
      • 알고리즘 (19)
      • 알고리즘 문제풀이 (13)
        • programmers (0)
        • 백준 (1)
        • LeetCode (12)
      • Android (3)
      • Book&Lesson (13)
        • [Lesson] 프로그래머스 커뮤러닝 (Pyth.. (1)
      • 참고한 글들 (1)
      • 컨퍼런스 정리 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    추천알고리즘
    개인화추천
    MPP데이터베이스
    sort
    트리
    리트코드
    파이프라인구축
    머신러닝
    시간복잡도
    빅데이터
    카프카
    Algorithm
    알고리즘풀이
    leetcode
    hadoop
    정렬알고리즘
    mvvm
    ViewModel
    릿코드
    버블정렬
    알고리즘
    데이터시각화
    데이터엔지니어
    알고리즘문제
    BI도구
    Kafka
    카프카클라이언트
    DP문제
    정렬
    빅데이터를지탱하는기술
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
kiminae
[LeetCode] 100. Same Tree
상단으로

티스토리툴바