题目: 已知森林采用二叉链表结构存储,每个结点中有3个字段:data,firstson,nextbrother。设计算法以输出森林中每对父子结点的值。图2即为一个森林,其输出结果为(A,B)(B,C)(C,D)(C,E)(B,F)(F,G)(A,H)(H,I)(A,J)(J,K)(J,L)(M,N)(M,O)。
void ParentAndChild(csNode *t)
{
csNode *p;
if(t)
{
if(t -> firstChild)
{
p = t -> firstChild;
printf("(%c,%c)",t -> data,p -> data);
ParentAndChild(p);
p = p -> nextSibling;
while(p)
{
printf("(%c,%c)",t -> data,p -> data);
p = p -> nextSibling;
}
}
if(t -> nextSibling)
{
ParentAndChild(t -> nextSibling);
}
}
}
这是我的解题方法,运用递归的思想,主要的难点是森林的二叉链表是左右子树“地位不平等”的,所以处理起来左右子树会不一样。不知道各位大佬还有没有更好更简洁的方法。新人一枚,欢迎大家的交流。