统计二叉树中叶子结点个数
MyDreamingCode 人气:0树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因
为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的,下面我们就用简单小栗子来简单说明关于统计C语言二叉树中叶子结点个数的方法吧
简单小栗子:
#include<stdio.h> #include<stdlib.h> typedef char ElemType; typedef struct BTNode { ElemType data; struct BTNode *left; struct BTNode *right; }BTNode,*BiTree; //创建二叉树 void createBTNode(BiTree &BT) { ElemType ch; scanf("%c",&ch); if(ch==' ') BT=NULL; else { BT = (BTNode*)malloc(sizeof(BTNode)); BT->data= ch; createBTNode(BT->left); createBTNode(BT->right); } } //先序遍历二叉树 void printDLR(BiTree BT) { if(BT) { printf("%c ",BT->data); printDLR(BT->left); printDLR(BT->right); } } //统计二叉树结点个数 void countLeaves(BiTree BT,int &count) { if(BT) { if(BT->left==NULL && BT->right==NULL) count++; else{ countLeaves(BT->left,count); countLeaves(BT->right,count); } } } void main() { BTNode *BT; int count=0; createBTNode(BT); printf("先序遍历:"); printDLR(BT); printf("\n"); countLeaves(BT,count); printf("二叉树结点的个数:%d\n",count); }
按照先序遍历的方式来输入二叉树结点,若孩子结点为空,则输入空格。
输入:
ABD E CF
返回结果:
先序遍历:
A B D E C F
二叉树结点的个数:
3
叶子结点分别是:
D、E、F
加载全部内容