# include<stdio.h>
# include<stdlib.h>
typedef char TElemType;//把二叉树的类型定义为字符型
typedef struct node
{
TElemType data;
struct node *lchild,*rchild;
}BiTNode,*BiTree;
void InitBiTree(BiTree *root)
{
(*root)=NULL;
}
//递归的方法创建一棵二叉树
void Create(BiTree *root)
{
TElemType x;
scanf("%c",&x);
getchar();
if(x=='0') return ;
else
{
(*root)=(BiTNode*)malloc(sizeof(BiTNode));
(*root)->data=x;
(*root)->lchild=(*root)->rchild=NULL;
Create(&((*root)->lchild));
Create(&((*root)->rchild));
}
}
void PreOrder(BiTree root)//先序遍历二叉树,root为指向二叉树根结点
{
if(root!=NULL)
{
printf("%c ",root->data);//访问根结点
PreOrder(root->lchild);//先序遍历左子树
PreOrder(root->rchild);//先序遍历右子树
}
}
int OncechildNum(BiTree root)
{
if(root==NULL) return 0;
else
if(root->lchild==NULL&&root->rchild==NULL)
return 0;
else
if(root->lchild==NULL||root->rchild==NULL)
{
if(root->lchild!=NULL&&root->rchild==NULL)
return(OncechildNum(root->lchild)+1);
if(root->lchild==NULL&&root->rchild!=NULL)
return(OncechildNum(root->rchild)+1);
}
else
return(OncechildNum(root->lchild))+OncechildNum(root->rchild);
}
void main()
{
BiTree bt;
printf("创建一个二叉树:");
Create(&bt);
printf("先序遍历该二叉树后的结果为:");二叉树公式
PreOrder(bt);
printf("\n");
printf("该二叉树的单分支结点个数为:%d\n",OncechildNum(bt));
printf("\n");
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论