一棵二叉树以二叉链表表示,求制定某一层K上叶子结点的个数
基本思想:采用队列结构按层次遍历,遍历K层时记录叶子结点个数。
代码:
int LeafKlevel(BiTree bt,int k) { if(bt==NULL||k<1) { return 0; } BiTree p=bt,Q[]; int front=0,rear=1,leaf=0; int last=1,level=1; Q[1]=p; while(front<=rear) { p=Q[++front]; if(level==k&&!p->lchild&&!p->rchild) { leaf++; } if(p->lchild) { Q[++rear]=p->lchild; } if(p->rchild) { Q[++rear]=p->rchild; } if(front==last) { level++; last=rear; } if(level>k) { return leaf; } } }