Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 1주일회고
- 커스텀 헤더
- 개발자 취업
- 디자인 패턴
- @FeignClient
- Python
- 전략패턴 #StrategyPattern #디자인패턴
- 빈 충돌
- 인프콘 2024
- DesignPattern
- spring batch 5.0
- 99클럽
- 디자인패턴
- TiL
- 취업리부트코스
- KPT회고
- 개발자부트캠프추천
- jwttoken
- 파이썬
- infcon 2024
- 프로그래머스
- 코딩테스트 준비
- 프로그래머스 이중우선순위큐
- 빈 조회 2개 이상
- JavaScript
- 단기개발자코스
- Spring multimodule
- 구글 OAuth login
- 항해99
- jwt
Archives
- Today
- Total
m1ndy5's coding blog
LeetCode 110. Balanced Binary Tree with Python 본문
https://leetcode.com/problems/balanced-binary-tree/description/
이 문제 또한 어려워서 못풀었다..
사실 balanced binary tree 가 뭔지 잘 몰라서 엄청 해맸던 거 같다.
루트 기준으로 생각했기 때문에
이건 balanced인데
이건 balanced가 아니라는게 뭔말이야 대체 하고 한참을 고민했더라는,,,,
얘 또한 루트 기준으로 balanced가 아니가 각 노드 기준으로 balanced였다,,ㅎ
결국 각 노드 기준으로 left가 없는데 right가 2개라던가 right가 없는데 left가 2개와 같은 상황이 있으면 안됐던것!
(한쪽으로 치우친 트리를 편향 이진 트리라고 한다. 성능면에서 최악이라고 한다. 찾을 때까지 내려가야하기 때문 O(N))
높이 균형을 매번 맞추는 AVL 트리가 대표적인 자가 균형 이진 탐색 트리라고 한다.
# 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
from collections import deque
class Solution:
def isBalanced(self, root: Optional[TreeNode]) -> bool:
def check(root):
if not root:
return 0
left = check(root.left)
right = check(root.right)
# 이미 불균형이 온 쪽이 있거나 차이가 2 이상 나면 -1 반환
if left == -1 or right == -1 or abs(left-right) > 1:
return -1
# 가장 긴 루트 + 1(현재 위치까지)
return max(left, right) + 1
return check(root) != -1
제일 밑까지 내려갔다가 올라오면서 왼쪽 오른쪽의 레벨 차이를 구하고 2이상 나게된다면 -1를 리턴함으로써 얘 불균형이에요를 알렸다(?)
그리고 -1이 리턴된다면 이미 아래에서 불균형이 왔단 뜻임으로 계속해서 -1을 리턴하게 되고
결국 재귀가 끝날때까지 -1이라면 불균형이라는 뜻이었다!
'알고리즘 with python > 알고리즘 스터디' 카테고리의 다른 글
99클럽 코테 스터디 2일차 TIL 해시 : 프로그래머스 LV.2 의상 with Python (0) | 2024.05.21 |
---|---|
99클럽 코테 스터디 1일차 TIL 해시 : 프로그래머스 LV.2 전화번호 목록 with Python (0) | 2024.05.20 |
LeetCode 700. Search in a Binary Search Tree with Python (0) | 2024.01.12 |
LeetCode 938. Range Sum of BST with Python (0) | 2024.01.12 |
LeetCode 543. Diameter of Binary Tree with Python (0) | 2024.01.12 |