- 1
- 0
- 约6.44千字
- 约 5页
- 2020-04-01 发布于河北
- 举报
1、对二叉树的某层上的结点进行运算,采用队列结构按层次遍历最适宜。
int LeafKlevel(BiTree bt, int k) //求二叉树bt 的第k(k1) 层上叶子结点个数
{if(bt==null || k1) return(0);
BiTree p=bt,Q[]; //Q是队列,元素是二叉树结点指针,容量足够大
int front=0,rear=1,leaf=0; //front 和rear是队头和队尾指针, leaf是叶子结点数
int last=1,level=1; Q[1]=p; //last是二叉树同层最右结点的指针,level 是二叉树的层数
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++; //二叉树同层最右结点已处理,层数增1
last=rear; } //last移到指向下层
原创力文档

文档评论(0)