假设二叉树采用二叉链存储结构,设计一个算法求二叉树中某一层的结点个数

#include<bits/stdc++.h>

typedef struct node

{

 char data;

 struct node *lchild,*rchild;

}BTNode;

void Greate(BTNode *&T)

{

 char ch;

 scanf("%c",&ch);

 if(ch=='#') T=NULL;

 else 

 {

  T=(BTNode*)malloc(sizeof(BTNode));

  T->data=ch;

  Greate(T->lchild);

  Greate(T->rchild);

 }

}

void Disp(BTNode *T)

{

 if(T!=NULL)

 {

  printf("%c",T->data);

  if(T->lchild!=NULL || T->rchild!=NULL)

  {

   Disp(T->lchild);

   if(T->rchild!=NULL) Disp(T->rchild);

  }

 }

}

void LNodenum(BTNode *T,int h,int k,int &n)

{

 if(T==NULL) return;

 else 

 {

  if(h==k) n++;

  else if(h<k)

  {

   LNodenum(T->lchild,h+1,k,n);

   LNodenum(T->rchild,h+1,k,n);

  }

 }

}

int main()//ABD#G###CE##F##

{

 BTNode *T;

 Greate(T);

 Disp(T);

 int k;

 int n=0,l=4;

 LNodenum(T,1,l,n);

 printf("%d",n);

 return 0;

}

猜你喜欢

转载自blog.csdn.net/2302_77099705/article/details/130909634