ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 알고리즘...63
    일지 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;
    }

     

    댓글

Designed by Tistory.