问答题 在一棵以二叉链表表示的二叉树上,试写出用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目的算法。【同济大学2000三、2(12分)】【山东大学1993二(12分)】【上海交大1999三(12分)】【天津大学2005七(10分)】【北京理工200l九(8分)2006七、1(15/2分)】【南京航空航天大学2004二、3(12分)】
【正确答案】正确答案:层次遍历二叉树,需要使用队列。在遍历中统计度为1的结点的个数。核心语句段如下: QueueInit(Q); QueueIn(Q,bt); //Q是以二叉树结点指针为元素的队列 while(!QueueEmpty(Q)) {p=Queueout(Q); cout<data; //出队,访问结点 if(p一>ichild&&!P一>rchild||!p->ichild&&P一>rchild)num++;//度为1的结点 if(p一>ichild)QueueIn(Q,p->Ichild); //非空左子女入队 if(p一>rchild)QueueIn(Q,p->rchild); //非空右子女入队 }
【答案解析】