Skip to content

Commit 2ad1eec

Browse files
committed
feat: 리밸런싱에 필요한 도구 LR 회전, RL 회전 메서드 작성
1 parent 750720e commit 2ad1eec

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

yoonexample/src/main/java/search/binarysearchtree/AVLTreeNode.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,22 @@ private BinaryTreeNode<E> rotateRR(BinaryTreeNode<E> binaryTreeNode) {
5353

5454
return childNode; // 변경된 루트 노드 반환
5555
}
56+
57+
private BinaryTreeNode<E> rotateLR(BinaryTreeNode<E> binaryTreeNode) {
58+
// LR 회전을 위한 준비
59+
BinaryTreeNode<E> parentNode = binaryTreeNode;
60+
BinaryTreeNode<E> childNode = parentNode.getLeftSubTree();
61+
62+
parentNode.changeLeftSubTree(rotateRR(childNode)); // 부분적 RR회전
63+
return rotateLL(parentNode); // LL회전
64+
}
65+
66+
private BinaryTreeNode<E> rotateRL(BinaryTreeNode<E> binaryTreeNode) {
67+
// RL 회전을 위한 준비
68+
BinaryTreeNode<E> parentNode = binaryTreeNode;
69+
BinaryTreeNode<E> childNode = parentNode.getLeftSubTree();
70+
71+
parentNode.changeRightSubTree(rotateLL(childNode)); // 부분적 LL회전
72+
return rotateRR(parentNode); // RR회전
73+
}
5674
}

0 commit comments

Comments
 (0)