-
B 트리 제거 메소드 구현 진행
형제 노드에 여유 노드가 있는 경우를 처리한다.
BTreeNode
/// <summary> /// 이 노드에서 키를 인출해도 안정적인지 여부를 반환한다. /// </summary> /// <returns>키를 인출해도 안정적인지 여부</returns> bool BTreeNode::IsAbleToWithdraw() { return size > TotalKeyCount / 2; }
노드를 제거한 뒤 처리를 위해 함수를 구현하다가 노드를 삭제하는 건 리프 노드가 아닌 중간 노드에서도 발생할 수 있다는 것을 알게 됐다.
이 부분에서도 이진 검색 트리와 동일하게 해당 키에 자식 노드가 존재하는 경우 자식 노드에서 적절한 키를 가져와 값을 교환하고 리프 노드에서 삭제가 진행되도록 구현해야 할 필요가 있어 보인다.
B 트리는 상위 노드가 되면 항상 두 개의 자식이 발생하므로 적절하게 편한 방향의 노드를 선택하여 구성하도록 하면 될 것 같다.