int LevelCount(BiTNode *b,int k){
BiTNode *p=b,*temp[Maxsize];
int layer=0,count=0, m=0, n=1; (m:上一层结点的尾 n:当层结点的尾)
temp[0]=NULL;
temp[1]=p;
if(p==NULL) return 0;//二叉树为空,任意层结点个数均为0
while(1){
layer++;
for(m++;m<=n;m++){//从m+1到n遍历当层结点,往temp数组中存下一层结点
if(temp[m]->lchild!=NULL)
temp[++n]=temp[m]->lchild;
if(temp[m]->rchild!=NULL)
temp[++n]=temp[m]->rchild;
}
if(k==layer)break;//到指定层时,退出循环
}
for(m++;m<=n;m++){//从m+1到n遍历当层结点,找叶子结点
if((temp[m]->lchild==NULL && temp[m]->rchild!=NULL) ||
(temp[m]->lchild!=NULL && temp[m]->rchild==NULL))count++;
}
return count;文章来源:https://www.toymoban.com/news/detail-440773.html
}文章来源地址https://www.toymoban.com/news/detail-440773.html
到了这里,关于假设二叉树中每个结点值为单个字符,采用二叉链存储结构存储。设计一个算法,求二叉树b中第k层上叶子结点个数(非递归算法)。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!