일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- stratascratch
- 슬라이딩윈도우
- 리트코드
- sql코테
- 알고리즘
- heap
- Python3
- 파이썬기초100제
- codeup
- gcp
- GenAI
- 구글퀵랩
- 파이썬
- LeetCode
- GenerativeAI
- slidingwindow
- 니트코드
- two-pointer
- 자연어처리
- 투포인터
- nlp
- 파이썬알고리즘
- Python
- 릿코드
- Microsoft
- 코드업
- 생성형AI
- medium
- SQL
- dfs
Archives
- Today
- Total
Tech for good
[Leetcode/Tree] 872. Leaf-Similar Trees 본문


# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def leafSimilar(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> bool:
# 주어진 트리의 리프 노드(leaf node) 값을 순서대로 가져오는 함수
def get_leaf_sequence(root: Optional[TreeNode]) -> List[int]:
leaf_nodes = [] # 리프 노드 값을 저장할 리스트
# 깊이 우선 탐색(DFS)을 수행하는 재귀 함수
def dfs(node: Optional[TreeNode]):
if not node:
return
if not node.left and not node.right: # 리프 노드인 경우
leaf_nodes.append(node.val) # 리프 노드의 값을 리스트에 추가
dfs(node.left) # 왼쪽 자식 노드 탐색
dfs(node.right) # 오른쪽 자식 노드 탐색
dfs(root) # 루트 노드부터 DFS 시작
return leaf_nodes # 리프 노드 값 리스트 반환
# 두 트리의 리프 노드 값 리스트를 비교하여 동일한지 확인
return get_leaf_sequence(root1) == get_leaf_sequence(root2)
'IT > Computer Science' 카테고리의 다른 글
[Leetcode/Heap] 1464. Maximum Product of Two Elements in an Array (0) | 2025.03.31 |
---|---|
[Neetcode/Heap] K Closest Points to Origin (0) | 2025.03.31 |
[Neetcode/Tree] Binary Tree Right Side View (0) | 2025.03.17 |
[Leetcode/Tree] 617. Merge Two Binary Trees (0) | 2025.03.17 |
[Leetcode/Tree] 222. Count Complete Tree Nodes (0) | 2025.03.17 |