Height-Balanced(높이 균형) Binary Tree

2024. 9. 22. 22:56·Algorithm/내용 정리

 

❒ Description


[LeetCode#110] Balanced Binary Tree 문제를 풀면서 접하게 된 개념을 정리하자.

 

 

 

 

 

❒ Height-Balanced Binary Tree


1. Height-Balanced Binary Tree란?

height-balanced Binary Tree는 트리의 모든 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이 차가 1 이하인

트리를 말한다. 즉, 트리의 각 노드에 대해 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 크게 나지 않도록 균형을

맞춘 형태다. 이 균형 덕분에 탐색, 삽입, 삭제 등의 연산에서 시간 복잡도를 최소화할 수 있다.

 

 

2. 주요 특징 

i ) 높이 차이 제한

각 노드의 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 1 이하이다.

 

ii ) 탐색 성능 

트리가 균형을 유지하므로, 탐색 삽입, 삭제 등의 연산에서 평균적으로 O(logN)의 시간 복잡도를 갖는다.

일반적인 BST(Binary Search Tree)에서 트리가 편향되면 최악의 경우 O(N)까지 느려질 수 있지만, 

높이 균형 이진 트리는 이를 방지한다.

 

 

3. 종류 

TODO : AVL트리, RB트리 정리해서 링크 걸기

i ) AVL 트리

이진 트리에서 각 노드의 왼쪽과 오른쪽 자식 트리의 높이 차이가 1을 넘지 않도록 하는 트리.

삽입과 삭제 시에 항상 균형을 유지하기 위해 회전을 사용한다.

 

ii ) Red-Black 트리

노드를 빨간색 또는 검은색으로 색칠하여 트리의 균형을 유지하는 방식.

삽입 및 삭제 시 규칙에 따라 트리를 균형 잡으면 회전도 사용한다.

 

 

4. 예시

Height Balanced & Height Unbalanced

Unbalanced한 트리의 Node(5)를 기준(root)으로 보면

  • 왼쪽에 있는 Node(1)까지의 깊이는 2
  • 오른쪽에는 Node가 없으므로 깊이는 0

으로 해석할 수 있다. 따라서 높이 차이가 1 이하여야 하는 조건을 만족시키지 못하기 때문에 

Height-Balanced하지 못한 트리로 볼 수 있다.

 

 

 

 

 


'Algorithm > 내용 정리' 카테고리의 다른 글

Insertion sort (삽입 정렬)  (0) 2024.09.29
트리를 순회하는 방법들  (0) 2024.09.26
Dijkstra & Floyd-Warshall  (0) 2024.09.17
Floyd Warshall 알고리즘  (0) 2024.09.14
Dijkstra 알고리즘  (0) 2024.09.10
'Algorithm/내용 정리' 카테고리의 다른 글
  • Insertion sort (삽입 정렬)
  • 트리를 순회하는 방법들
  • Dijkstra & Floyd-Warshall
  • Floyd Warshall 알고리즘
gilbert9172
gilbert9172
gilbert9172 님의 블로그 입니다.
  • gilbert9172
    バックエンド
    gilbert9172
  • 전체
    오늘
    어제
    • All Categories (175)
      • 우테코 7기 (21)
        • 1주차 (8)
        • 2주차 (5)
        • 3주차 (6)
      • Langauge (4)
        • Java (3)
        • Kotlin (1)
      • Back-End (13)
        • SpringBoot (1)
        • Trouble Shooting (0)
        • Setup & Configuration (1)
        • SQL (3)
        • Redis (8)
      • Architecture (6)
        • Multi Module (1)
        • DDD (5)
      • CS (30)
        • Data Structure (6)
        • Operating System (0)
        • Network (12)
        • Database (10)
        • Design Pattern (2)
      • Algorithm (78)
        • 내용 정리 (18)
        • 문제풀이 (60)
      • DevOps (6)
        • AWS (5)
        • Git (1)
      • Front-End (1)
        • Trouble Shooting (1)
      • Project (6)
        • 페이스콕 (6)
      • Book (9)
        • 이벤트 기반 마이크로서비스 구축 (7)
        • 친절한 SQL 튜닝 (2)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Back-Tracking
    Two-Pointer
    오블완
    greedy
    sliding-window
    부분단조성
    binarysearch
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
gilbert9172
Height-Balanced(높이 균형) Binary Tree
상단으로

티스토리툴바