问题描述:
现在有这样一种树型结构。
初始化如下:
程序实现,将里面的level变成以下形式
这种树的特点是有多个根结点,根结点的Level值为0
每个结点有多个父节点和子节点,该结点的Level值是父节点Level值中最大的那个再加1
如此下去。。。
以下函数由参数传入其中的一个结点。
void AssignLevel( CASObject *allObjectList )
{
if(NULL == allObjectList)
{
return;
}
//如果有父母
long NumParents = allObjectList->GetNumParents();
if(NumParents > 0)
{
//保存父节点中Level值的最大值
long max = 0;
//遍历父节点数组,求出父节点中Level值的最大值
for(long i=0; i<NumParents; ++i)
{
if(allObjectList->GetParent(i)->GetLevel() > max)
{
max = allObjectList->GetLevel();
}
}
//设置该节点的Level值
allObjectList->SetLevel(max+1);
}
//如果没有父母,则是第0层
else
{
SetLevel(0);
}
//如果有孩子
long NumChildren = allObjectList->GetNumChildren();
if(NumChildren > 0)
{
for(long i=0; i<NumChildren; ++i)
{
AssignLevel(allObjectList->GetChild(i));
}
}
}