7þ¦

来自「1、猴子选大王 2、约瑟夫环 3、迷宫求解 4、回文游戏 5、地图四染色」· 代码 · 共 52 行

TXT
52
字号
//求二叉树中叶子结点个数

#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
#include "iostream"

int sum=0;
typedef struct node
{
	char data;
	struct node *lchild;
	struct node *rchild;
}*BiTree;

void creatBT(BiTree &T)//建树
{
	char ch;
	scanf("%c",&ch);
	if(ch=='.')
		T=NULL;
	else
	{	T=(node *)malloc(sizeof(node));
		if(!T) exit(0);
		T->data=ch;
		creatBT(T->lchild);
		creatBT(T->rchild);
	}
}

void pre_order(node *T)
{
	if(T)
	{
		if((T->lchild==NULL&&T->rchild!=NULL)||(T->lchild!=NULL&&T->rchild==NULL))//如果度为1
			sum++;//统计
		pre_order(T->lchild);
		pre_order(T->rchild);
	}
}
int main()
{
	node *T;
	printf("请输按先序序列输入一串字符,当子树为空时,用.来代替:\n");
	creatBT(T);
	pre_order(T);
	printf("\n该二叉树的叶子数是:%d\n",sum);
	return 0;
}


//abc..de.g..f...

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?