-
B 트리 삽입 함수 구현 진행
삽입 알고리즘 처리 중 재귀적으로 처리해야 하는 부분을 적용했다.
BTree::Insert
/// <summary> /// 주어진 값을 B 트리에 삽입한다. /// </summary> /// <param name="data">삽입할 값</param> void BTree::Insert(int data) { if (Exists(data)) { return; } Insert(_root, data); } /// <summary> /// 주어진 값을 B 트리에 삽입한다. /// </summary> /// <param name="parent">삽입할 노드</param> /// <param name="data">삽입할 값</param> void BTree::Insert(BTreeNode* parent, int data) { // 루트가 빈 값이었던 경우 if (parent == nullptr) { BTreeNode* node{ _nodeManager.Pop() }; node->Insert(data); _root = node; } // 노드에 키 삽입 실패한 경우 else if (!parent->Insert(data)) { BTreeNode* node = parent->GetProperNodeToInsert(data); if (node != nullptr) { Insert(node, data); } else { // 기존 노드(parent)에 대해 오버플로우 처리 진행 } } }
이제 이후에 오버플로우에 대한 처리를 진행해야 하는데 이 부분을 어떻게 처리해야 하는지가 되게 애매하게 느껴진다.
이 부분은 구글링을 해 봐야 할 것 같다.