Mathlife
Mathlife의 학습 노트
Mathlife
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • 알고리즘
      • 자료구조
      • 운영체제
      • 네트워크
      • 데이터베이스
    • 프로그래밍 언어
      • Java
      • JavaScript
      • C·C++
      • Python
    • Backend
      • Spring
    • Frontend
      • HTML
      • CSS
    • Math
      • Linear Algebra
      • Calculus
    • AI
      • ML
      • DL
      • RL
    • Git

블로그 메뉴

  • 홈
  • 관리
  • 글쓰기
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Mathlife

Mathlife의 학습 노트

Tree rotation
CS/자료구조

Tree rotation

2022. 4. 18. 20:15

[ 출처 : https://en.wikipedia.org/wiki/Tree_rotation ]

 

- left subtree가 더 무거울 때 right rotation을 해준다.

- right subtree가 더 무거울 때 left rotation을 해준다.

 

Example : rotate left

1에서 imbalance가 발생했다고 해보자.

또, imbalance의 원인이 3 혹은 3의 subtree에 있다고 해보자.

 

1을 기준으로 left rotation을 해준다. (즉, 1-2-3 덩어리를 왼쪽으로 한 칸 민다)

 

imbalance가 해소되었다.

 

 

Example :  rotate right-left

1에서 imbalance가 발생했다고 해보자.

또, imbalance의 원인이 2 혹은 2의 subtree에 있다고 해보자.

 

z : imbalance가 발생한 위치

y : z.right

x : y.left

 

로 정의하자.

 

x가 z로부터 right-left 위치에 있으므로 rotateRight(y), rotateLeft(z) 를 해야한다.

 

이렇게 하면 imbalance가 해소되는지 한 번 확인해보자. 

 

먼저 3을 기준으로 right rotation을 해준다. (즉, 2-3 덩어리를 오른쪽으로 한 칸 민다)

 

다음으로 1을 기준으로 left rotation을 해준다. (즉, 1-2-3 덩어리를 왼쪽으로 한 칸 민다)

 

imbalance가 해소되었다.

'CS > 자료구조' 카테고리의 다른 글

AVL Tree  (0) 2022.04.19
Balanced BST  (0) 2022.04.18
Binary Search Tree (BST)  (0) 2022.04.18
Max Heap  (0) 2022.04.18
Tree (Introduction)  (0) 2022.04.18
    'CS/자료구조' 카테고리의 다른 글
    • AVL Tree
    • Balanced BST
    • Binary Search Tree (BST)
    • Max Heap
    Mathlife
    Mathlife

    티스토리툴바