C语言编程:如何计算二叉树叶子结点数目?

C语言编程:如何计算二叉树叶子结点数目?

编码文章call10242024-12-09 11:00:1129A+A-

我们都知道,一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。

节点:

就是一个图中的0、1、2~~15,这些就叫节点。

叶子节点:

就是没有子节点的节点,比如图中的8、9~~15这些。

接下来,我们直接用代码看一下怎么计算二叉树叶子结点数目(C语言):

#include<stdio.h>

#include<stdlib.h>

int depth;

typedef struct Node{

char data;

struct Node *Lchild;

struct Node *Rchild;

}BiTNode,*Bitree;

void CreateBinTree(BiTNode **T)

{

char ch;

ch=getchar();

if(ch=='#'){ *T=NULL;return;}

*T=(BiTNode*)malloc(sizeof(BiTNode));

(*T)->data=ch;

CreateBinTree(&((*T)->Lchild));

CreateBinTree(&((*T)->Rchild));

}

Bitree CreateBinTree2()

{ BiTNode *T;

char ch;

ch=getchar();

if(ch=='#'){ return NULL;}

T=(BiTNode*)malloc(sizeof(BiTNode));

T->data=ch;

T->Lchild= CreateBinTree2();

T->Rchild= CreateBinTree2();

}

void PreTree(Bitree T)

{ if(T==NULL) return;

printf("%c ",T->data);

PreTree(T->Lchild);

PreTree(T->Rchild);

}

int PostTreeDepth(BiTNode *T)//求树的深度(后序遍历)

{

int hl,hr,max;

if(T!=NULL)

{

hl=PostTreeDepth(T->Lchild);

hr=PostTreeDepth(T->Rchild);

max=hl>hr?hl:hr;

return (max+1);

}

else return 0;

}

void PreTreeDepth(BiTNode *T,int h)//求树的深度(先序遍历)depth为全局变量

{

if(T!=NULL)

{

if(h>depth) depth=h;

PreTreeDepth(T->Lchild,h+1);

PreTreeDepth(T->Rchild,h+1);

}

}

int PreOrderNUM(Bitree T)//递归就好了

{ int nleft =0,nright = 0;

if(T==NULL) return 0;

if(T->Lchild==NULL&&T->Rchild==NULL) return 1;

if (T->Lchild){

nleft = PreOrderNUM(T->Lchild);

}

if (T->Rchild){

nright = PreOrderNUM(T->Rchild);

}

return nleft+nright;

}

int main()

{

BiTNode *T=(BiTNode*)malloc(sizeof(BiTNode));

T = CreateBinTree2();

//PreTree(T);

//printf("%d",PostTreeDepth(T));

printf("%d",PreOrderNUM(T));

return 0;

}

作者:MCL

不懂就问,对于准备学习编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4