Пример #1
0
static int recursive_count(BSTreeNode* root) // O(n)
{
    int ret = 0;
    
    if( root != NULL )
    {
        ret = recursive_count(root->left) + 1 + recursive_count(root->right);
    }
    
    return ret;
}
Пример #2
0
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
assert_size() const
{
  _GLIBCXX_DEBUG_ASSERT(recursive_count(m_p_head->m_p_parent) == m_size);
}
Пример #3
0
static __int64 recursive_count(int len, int from = 0, color last_color = uninit)
{
	__int64 result = 0;
	if(len < 0)
		return 0;
	if(len == 0)
		return 1;
	for(int block_len = 1; block_len <= len; ++block_len)
	{
		if(last_color != black)
			result += recursive_count(len - block_len, block_len + from, black);		// at least one black block.
		if(last_color != red)
			result += recursive_count(len - block_len - 2, block_len + from + 2, red);		// at least three red blocks.
	}
	return result;
}
Пример #4
0
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
assert_size(const char* __file, int __line) const
{ PB_DS_DEBUG_VERIFY(recursive_count(m_p_head->m_p_parent) == m_size); }