ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 알고리즘...68
    일지 2021. 10. 13. 13:14

    B 트리 검색 함수 구현

    기존 배열에서 포인터 방식으로 구현 변경. 기존 방식보다 가독성 측면에서 더 나은 것 같다.

     

    BTree::Exists

    /// <summary>
    /// B 트리를 확인하여 주어진 값이 트리에 존재하는지 여부를 반환한다.
    /// </summary>
    /// <param name="data">확인할 값</param>
    /// <returns>존재 여부</returns>
    bool BTree::Exists(int data)
    {
    	BTreeNode* node{ _root };
    	while (node != nullptr)
    	{
    		BTreeNodeKey* key{ node->keyRoot };
    		while (key != nullptr)
    		{
    			if (key->value == data)
    			{
    				return true;
    			}
    
    			if (data < key->value)
    			{
    				node = key->left;
    				break;
    			}
    			else if (key->value < data)
    			{
    				if (key->next == nullptr || data < key->next->value)
    				{
    					node = key->right;
    					break;
    				}
    			}
    			
    			key = key->next;
    		}
    	}
    	
    	return false;
    }

    댓글

Designed by Tistory.