试编写算法 对一棵以孩子一兄弟链表表示的树统计叶子的个数。
算法,个数,叶子
已帮助 人
-
正确答案:int CountLeavies(CsTreeT) { /*统计用孩子一兄弟表示法存储的树T的叶子结点数*/ count=0j if(T) { InitQueue(Q);EnQueue(QT); /*初始化队列并让根入队列*/ while(iEmptyQueue(Q)) {DeQueue(QP); if(p一>frrstchild=NULL) count++; elseEnQueue(Qp一>firstchild); q=P一>nextsibiling; while(q) /*右兄弟非空*/ { EnQueue(Oq); q=q一>nextsibling; } } } retum count; }
由树的孩子一兄弟表示法可知,若结点p的firstchild为空,则该结点即为叶子结点,对树T进行层次遍历,找出所有满足条件的结点即为叶子结点的数目,算法描述如下。
