[LeetCode] 236. Lowest Common Ancestor of a Binary Tree

2023. 8. 6. 16:02· Algorithm/Python

Binary 트리 하나와 해당 트리에 속한 두 개의 노드가 주어진다. 이 때, 두 노드의 공통 조상 중 가장 낮은 Node 즉, Lowest common ancestor 를 찾아라.

 

제약 조건

2 <= node 개수 <= 10^5 

설명: n개의 node가 있으면 O(n)의 시간복잡도를 가짐. 노드의 개수가 10^5까지면 전체 트리를 순회하는 데에 시간초과가 나지 않을 것.(넣었을 때 10^8이 넘지 않기 때문 -> 시간제한 초과하지 않음) 

 

-10^9 <= Node.val <= 10^9 

설명: "-10^9"는 4byte 짜리 int형 자료형에 저장할 수 있다는 뜻 (4byte가 표현할 수 있는 수의 범위: -2^31 ~ 2^31-1)

("-10^9"는 저 범위 안에 포함이 되기 때문에 제한 조건을 줌)

 

모든 Node.val은 unique 하다. (예외사항=중복값 제한)

설명: p != q (p, q는 모두 주어진 Tree 안에 속해 있다.)

 

 

# 가장 낮은 공통 조상의 노드를 반환한다. (왼쪽, 오른쪽에서 정보가 들어오고 그 둘을 취합해서 특정값을 반환해준다.)
def LCA(root, p, q):
    if root == None:
        return None
    left = LCA(root.left, p, q) # 재귀
    right = LCA(root.right, p, q)
    if root == p or root == q:
        return root
    elif left and right:
        return root
    return left or right

# left, right의 정보 먼저 방문하고, 그 결과값을 태도로 다음 노드를 방문 (Postorder와 비슷)
# postorder 방식으로 트리 순회 (left를 방문한 다음 right child 방문. 그 다음 스스로(root)를 방문)

LCA([3, 5, 1, 6, 2, 0, 8, None, None, 7, 4] ,6, 4)

 

 

 

 

 

 

 

 

https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/

 

Lowest Common Ancestor of a Binary Tree - LeetCode

Can you solve this real interview question? Lowest Common Ancestor of a Binary Tree - Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According to the definition of LCA on Wikipedia [https://en.wikipedia.org/wiki/

leetcode.com

 

 

 

반응형

'Algorithm > Python' 카테고리의 다른 글

[알고리즘/Python] (개념) Dijkstra(다익스트라) 알고리즘 (최단경로 구하기) - Shortest Path  (0) 2023.11.27
[LeetCode] 200. Number of Islands  (2) 2023.10.13
[LeetCode] 104. Maximum Depth of Binary Tree  (0) 2023.08.10
[강의 정리/Stack]  (2) 2023.03.06
[강의 정리/Python] List  (0) 2023.03.05
'Algorithm/Python' 카테고리의 다른 글
  • [LeetCode] 200. Number of Islands
  • [LeetCode] 104. Maximum Depth of Binary Tree
  • [강의 정리/Stack]
  • [강의 정리/Python] List
빵판 AKA 브레드보드
빵판 AKA 브레드보드
반응형
빵판 AKA 브레드보드
BreadBoard's devlog
빵판 AKA 브레드보드
전체
오늘
어제
  • 분류 전체보기 (49)
    • iOS (8)
    • Swift (1)
    • RxSwift (2)
    • Algorithm (29)
      • Swift (7)
      • Python (9)
      • Java (12)
    • Error 정리 (3)
    • ETC (2)
    • CS (0)
    • Spring (1)
      • 일반 (0)
      • Spring Security (1)
    • Infra (0)
      • CI CD (0)
    • Project (2)
      • Vinyler (1)
      • BinBean (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 최단경로
  • RxSwift
  • Apple Business Manager
  • S3
  • 컴퓨터공학과
  • TestFlight
  • framework
  • SPM
  • 백준
  • uicollectionview
  • 알고리즘
  • 개발자
  • DFS
  • SwiftPackageManager
  • IOS
  • 다익스트라
  • AWS
  • CocoaPods
  • BFS
  • 편입
  • Dijkstra
  • 코딩테스트
  • AutoLayout
  • Apple Enterprise Program
  • github
  • xcode
  • greedy알고리즘

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
빵판 AKA 브레드보드
[LeetCode] 236. Lowest Common Ancestor of a Binary Tree
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.