试编写算法,对一棵以孩子一兄弟链表表示的树统计叶子的个数。

admin2014-12-25  28

问题 试编写算法,对一棵以孩子一兄弟链表表示的树统计叶子的个数。

选项

答案 int CountLeavies(CsTreeT) { /*统计用孩子一兄弟表示法存储的树T的叶子结点数*/ count=0j if(T) { InitQueue(Q);EnQueue(Q,T); /*初始化队列并让根入队列*/ while(iEmptyQueue(Q)) {DeQueue(Q,P); if(p一>frrstchild=NULL) count++; elseEnQueue(Q,p一>firstchild); q=P一>nextsibiling; while(q) /*右兄弟非空*/ { EnQueue(O,q); q=q一>nextsibling; } } } retum count; }

解析 由树的孩子一兄弟表示法可知,若结点p的firstchild为空,则该结点即为叶子结点,对树T进行层次遍历,找出所有满足条件的结点即为叶子结点的数目,算法描述如下。
转载请注明原文地址:https://jikaoti.com/ti/yULaFFFM
0

最新回复(0)