-
Notifications
You must be signed in to change notification settings - Fork 0
[동시편집] Tree 방식에서 밸런싱
wi-seong-cheol edited this page Dec 12, 2023
·
1 revision
RGATreeSplit 방식은 weighted unbalanced binary tree이다.
불균형 트리이기 때문에 주기적으로 리밸런싱을 수행한다.
func balanceTree() {
if (
nodeNumberInTree > 3000 &&
nbIns > Int(Double(nodeNumberInTree) / (0.14 * log(Double(nodeNumberInTree)) / log(2)))
) {
nbIns = 0
let content = createNodeList(tree: root)
createBalancedTree(tree: RGASTree<T>(), content: content, begin: 0, length: content.count)
addGoodSize(tree: root)
}
}
다음과 같이 가중치를 설정하여 가중치를 넘어가게 될 경우 리밸런싱 작업을 수행한다.
- [ADR] 아키텍처 의사 결정 기록: iOS 애플리케이션 아키텍처 채택하기
- [ADR] 아키텍처 의사 결정 기록: SwiftLint 채택
- [ADR] 아키텍처 의사 결정 기록: UI 영역에서 Combine 사용 결정
- [ADR] 아키텍처 의사 결정 기록: Presentation영역의 ViewModel에서 Input Output 패턴 도입 결정
- [ADR] 아키텍처 의사 결정 기록: 코디네이터 패턴 도입 결정
- [ADR] 아키텍처 의사 결정 기록: 로컬 스토리지로 코어 데이터 사용 결정
- [ADR] 아키텍처 의사 결정 기록: Custom Network Foundation 라이브러리 구현 및 모듈화 결정
- [ADR] 아키텍처 의사 결정 기록: 이미지캐셔 라이브러리 구현 및 모듈화 결정