如何计算一棵二叉树中所有叶子节点的具体数量?
- 内容介绍
- 相关推荐
本文共计310个文字,预计阅读时间需要2分钟。
伪创新是一种常见的社会现象,它指的是模仿或借鉴他人的创新成果,却冠以自己的名字或品牌进行推广。这种现象往往出现在市场竞争激烈、创新动力不足的领域。下面是对伪创新的简写
模仿创新,冒名推广。
#include<stdio.h>
#include<stdlib.h>
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef int Status;
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBiTree(BiTree *T)
{
char ch;
ch=getchar();
if(ch=='#')
*T=NULL;
else
{
(*T)=(BiTNode*)malloc(sizeof(BiTNode));
if(!*T)
exit(OVERFLOW);
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
return OK;
}
Status LeafCount(BiTree T,int *n)
{
if(T)
{
if(!T->lchild&&!T->rchild)
{
(*n)++;
return 1;
}
LeafCount(T->lchild,n);
LeafCount(T->rchild,n);
}
return *n;
}
Status PostOrderTraverse(BiTree T,Status (*visit)(TElemType e))
{
if(T)
{
PostOrderTraverse(T->lchild,visit);
PostOrderTraverse(T->rchild,visit);
(*visit)(T->data);
}
else
return OK;
}
Status visit(TElemType e)
{
printf("%c\t",e);
return OK;
}
int main()
{
BiTree T;
char ch;
printf("请输入一个二叉链表:");
CreateBiTree(&T);
printf("\n");
printf("后序遍历的二叉链表为:\n");
PostOrderTraverse(T,visit);
printf("\n");
int n;
LeafCount(T,&n);
printf("二叉树所有的叶子结点个数为%d",n);
return 0;
}
本文共计310个文字,预计阅读时间需要2分钟。
伪创新是一种常见的社会现象,它指的是模仿或借鉴他人的创新成果,却冠以自己的名字或品牌进行推广。这种现象往往出现在市场竞争激烈、创新动力不足的领域。下面是对伪创新的简写
模仿创新,冒名推广。
#include<stdio.h>
#include<stdlib.h>
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef int Status;
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBiTree(BiTree *T)
{
char ch;
ch=getchar();
if(ch=='#')
*T=NULL;
else
{
(*T)=(BiTNode*)malloc(sizeof(BiTNode));
if(!*T)
exit(OVERFLOW);
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
return OK;
}
Status LeafCount(BiTree T,int *n)
{
if(T)
{
if(!T->lchild&&!T->rchild)
{
(*n)++;
return 1;
}
LeafCount(T->lchild,n);
LeafCount(T->rchild,n);
}
return *n;
}
Status PostOrderTraverse(BiTree T,Status (*visit)(TElemType e))
{
if(T)
{
PostOrderTraverse(T->lchild,visit);
PostOrderTraverse(T->rchild,visit);
(*visit)(T->data);
}
else
return OK;
}
Status visit(TElemType e)
{
printf("%c\t",e);
return OK;
}
int main()
{
BiTree T;
char ch;
printf("请输入一个二叉链表:");
CreateBiTree(&T);
printf("\n");
printf("后序遍历的二叉链表为:\n");
PostOrderTraverse(T,visit);
printf("\n");
int n;
LeafCount(T,&n);
printf("二叉树所有的叶子结点个数为%d",n);
return 0;
}

