概述
叶子结点就是无后继的结点,搞清楚这点我们就可以根据上一题的经验轻松写出本题。
代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
char data;
struct Node *LChild;
struct Node *RChild;
}BiTNode, *BiTree;
void CreateBinTree(BiTree *T); //创建二叉树
int Getleaf(BiTree T); //计算二叉树结点
int main()
{
int leaf;
BiTree T;
CreateBinTree(&T);
leaf = Getleaf(T);
printf("%d", leaf);
return 0;
}
void CreateBinTree(BiTree *T)
{ //创建二叉树
char c;
c = getchar();
if (c == '#') {
*T = NULL;
return;
}
*T = (BiTree) malloc (sizeof(BiTNode));
(*T)->data = c;
CreateBinTree(&((*T)->LChild));
CreateBinTree(&((*T)->RChild));
}
int Getleaf(BiTree T)
{ //计算二叉树结点
int LLeaf = 0, RLeaf = 0;
if(T==NULL) return 0;
if (T->LChild == NULL && T->RChild == NULL)
return 1;
if (T->LChild)
LLeaf = Getleaf(T->LChild);
if (T->RChild)
RLeaf = Getleaf(T->RChild);
return LLeaf+RLeaf;
}
最后
以上就是忧虑海燕为你收集整理的NOJ数据结构016——计算二叉树叶子结点数目的全部内容,希望文章能够帮你解决NOJ数据结构016——计算二叉树叶子结点数目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复