일지
알고리즘...63
niamdank
2021. 10. 6. 10:17
B 트리 검색 구현
다진 검색 트리인 B 트리의 검색을 구현한다.
BTree::Exists
/// <summary>
/// B 트리를 확인하여 주어진 값이 트리에 존재하는지 여부를 반환한다.
/// </summary>
/// <param name="data">확인할 값</param>
/// <returns>존재 여부</returns>
bool BTree::Exists(int data)
{
BTreeNode* node{ _root };
while (node != nullptr)
{
for (int i = 0; i < BTreeNode::TotalKeyCount; i++)
{
if (node->keys[i].value == data)
{
return true;
}
if (data < node->keys[i].value)
{
node = node->keys[i].left;
break;
}
if (node->keys[i].value < data)
{
int nextKeyIdx{ i + 1 };
if (nextKeyIdx < BTreeNode::TotalKeyCount && node->keys[i + 1].isSet)
{
if (data < node->keys[i + 1].value)
{
node = node->keys[i].right;
break;
}
}
else
{
node = node->keys[i].right;
break;
}
}
}
}
return false;
}