ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 알고리즘...75
    일지 2021. 10. 22. 01:00

    B 트리 제거 메소드 구현 진행

    형제 노드에 여유 노드가 있는 경우를 처리한다.

     

    BTreeNode

    /// <summary>
    /// 이 노드에서 키를 인출해도 안정적인지 여부를 반환한다.
    /// </summary>
    /// <returns>키를 인출해도 안정적인지 여부</returns>
    bool BTreeNode::IsAbleToWithdraw()
    {
    	return size > TotalKeyCount / 2;
    }

     

    노드를 제거한 뒤 처리를 위해 함수를 구현하다가 노드를 삭제하는 건 리프 노드가 아닌 중간 노드에서도 발생할 수 있다는 것을 알게 됐다.

     

    이 부분에서도 이진 검색 트리와 동일하게 해당 키에 자식 노드가 존재하는 경우 자식 노드에서 적절한 키를 가져와 값을 교환하고 리프 노드에서 삭제가 진행되도록 구현해야 할 필요가 있어 보인다.

     

    B 트리는 상위 노드가 되면 항상 두 개의 자식이 발생하므로 적절하게 편한 방향의 노드를 선택하여 구성하도록 하면 될 것 같다.

    댓글

Designed by Tistory.