概述
这道题思路比较简单,在创建二叉树时可以借鉴先序遍历的方法:
如果输入的是非空节点,那将这个值赋给节点,并且以这个节点为参数递归调用这个节点的左右节点,直到空节点;
如果输入的是#,那么直接给这个节点赋null;
话不多说上代码
#include<stdio.h>
#include <stdlib.h>
typedef struct Node
{
char data;
struct Node* LChild;
struct Node* RChild;
}BiTNode,*BiTree;
//构建二叉树
int leaf = 0;//定义全局变量叶子节点的值
void CreateBiTree(BiTree* p)
{
char c;
c = getchar();
if (c == '#') *p = NULL;//若输入#即为空节点
else
{
*p = (BiTree)malloc(sizeof(BiTNode));
(*p)->data = c;
CreateBiTree(&((*p)->LChild));//按照前序遍历递归
CreateBiTree(&((*p)->RChild));
}
}
void Calculatingleaf(BiTree p)//计算叶子节点个数
{
if (p != NULL)
{
Calculatingleaf(p->LChild);
Calculatingleaf(p->RChild);
if (p->LChild==NULL&&p->RChild==NULL)//叶子节点判断条件
leaf++;
}
}
int main()
{
BiTree p;
CreateBiTree(&p);
Calculatingleaf(p);
printf("%d", leaf);
return 0;
}
最后
以上就是义气八宝粥为你收集整理的西北工业大学数据结构noj016计算二叉树叶子节点数目(耿6.14)的全部内容,希望文章能够帮你解决西北工业大学数据结构noj016计算二叉树叶子节点数目(耿6.14)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复