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(); } }
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); } } }