int count=0;//全局变量count
//链表法定义二叉树
typedef struct BiTNode
{
char date;
struct BiTNode* lchild;
struct BiTNode* rchild;
}BiTNode,*BiTree;
//线序递归创建二叉树
BiTree CreateBItree()
{
BiTree T;
char ch;
scanf("%c",&ch);
if(ch=='#')
{
T=NULL;
}
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->date=ch;
T->lchild=CreateBItree();
T->rchild=CreateBItree();
}
return T;
}
//计算度为1的结点个数
void CountDgree(BiTree T)
{
if(T==NULL)
{
return;
}
else
{
//计算左子树度为1的结点个数
CountDgree(T->lchild);
//计算右子树度为1的结点个数
CountDgree(T->rchild);
if(T->lchild==NULL&&T->rchild!=NULL)
{
count++;
}
if(T->lchild!=NULL&&T->rchild==NULL)
{
count++;
}
}
}
int main()
{
BiTree T=NULL;
printf("创建二叉树\n");
T=CreateBItree();//建立一棵二叉树
CountDgree(T);//计算度为1的节点个数
printf("二叉树度的个数:%d",count);
return 0;
}
用二叉表表示二叉树的存储方式,设计算法求二叉树中度为1的结点个数
最新推荐文章于 2024-01-17 19:33:43 发布