叶子结点就是无后继的结点,搞清楚这点我们就可以根据上一题的经验轻松写出本题。
代码:
#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——计算二叉树叶子结点数目内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复