【笔试题】一种树形结构--递归赋值(。。。)

来源:互联网 发布:电脑天猫,淘宝怎么删除 编辑:程序博客网 时间:2024/05/18 18:21

问题描述:

现在有这样一种树型结构。

初始化如下:

程序实现,将里面的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));}}}


 

 

 

原创粉丝点击