您的位置首页  散文日记

满满干货二叉树(二叉树叶子结点计算方法)

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

满满干货二叉树(二叉树叶子结点计算方法)

 

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

节点:就是一个图中的0、1、2~~15,这些就叫节点叶子节点:就是没有子节点的节点,比如图中的8、9~~15这些接下来,我们直接用代码看一下怎么计算二叉树叶子结点数目(C语言):#include。

#includeint depth; typedefstructNode{char data; structNode *Lchild;structNode *Rchild; }BiTNode,*Bitree;

voidCreateBinTree(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==#){ returnNULL;} T=(BiTNode*)malloc

(sizeof(BiTNode)); T->data=ch; T->Lchild= CreateBinTree2(); T->Rchild= CreateBinTree2(); } voidPreTree

(Bitree T){ if(T==NULL) return; printf("%c ",T->data); PreTree(T->Lchild); PreTree(T->Rchild); }

intPostTreeDepth(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); } elsereturn0; } voidPreTreeDepth(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) return0; if(T->Lchild==NULL&&T->Rchild==

NULL) return1; if (T->Lchild){ nleft = PreOrderNUM(T->Lchild); } if (T->Rchild){ nright = PreOrderNUM(T->Rchild); }

return nleft+nright; } intmain(){ BiTNode *T=(BiTNode*)malloc(sizeof(BiTNode)); T = CreateBinTree2();

//PreTree(T);//printf("%d",PostTreeDepth(T));printf("%d",PreOrderNUM(T)); return0; }作者:MCL不懂就问,对于准备学习编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!

可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186