Example #1
0
void FibHeap2::AssertDegreeSorted() const
{
	if(mRoots.Empty())
	{
		assert(!mHead);
		return;
	}
	
	assert(mHead);
	
	Node *cur = mRoots.mFirst;
	Node *next = cur->mNextSibling;
	
	cur->AssertDegreeSorted();
	
	while(next != mRoots.mFirst)
	{
		assert(cur->mDegree >= next->mDegree);
		
		cur = next;
		next = next->mNextSibling;
		
		cur->AssertDegreeSorted();
	}
}
Example #2
0
void FibHeap2::Node::AssertDegreeSorted() const
{
	if(!mChildren.Empty())
	{
		Node *cur = mChildren.mFirst;
		Node *next = cur->mNextSibling;
		
		assert(cur->mDegree < mDegree);
		cur->AssertDegreeSorted();
		
		while(next != mChildren.mFirst)
		{
			assert(cur->mDegree >= next->mDegree);
		
			cur = next;
			next = next->mNextSibling;
			
			cur->AssertDegreeSorted();
			assert(cur->mDegree < mDegree);
		}
	}
}