怎么计算C语言的二叉树中的叶子节点数?

怎么计算C语言的二叉树中的叶子节点数?,第1张

结点的度是指,该结点子树的个数,在二叉树中,不存在度大于2的结点。

计算公式:n0=n2+1

n0

叶子节点的个数

n2

是度为2的结点的个数

n0=n2+1=5+1=6

故二叉树有5个度为2的结点,则该二叉树中的叶子结点数为6。

扩展资料

叶子结点是离散数学中的概念。一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称“叶子”。

叶子是指度为0的结点,又称为终端结点。

叶子结点

就是度为0的结点

就是没有子结点的结点。

n0:度为0的结点数,n1:度为1的结点

n2:度为2的结点数。

N是总结点

在二叉树中:

n0=n2+1;

N=n0+n1+n2

参考资料:叶子结点_百度百科

二叉树叶子结点计算方法:

1、结点的度是指,该结点的子树的个数,在二叉树中,不存在度大于2的结点。

2、计算公式:n0=n2+1,n0是叶子节点的个数,n2是度为2的结点的个数,n0=n2+1=5+1=6。

3、故二叉树有5个度为2的结点,则该二叉树中的叶子结点数为6。

叶子节点数=总结点数-度数非零的节点数(戒子节点度为0)

叶子结点是离散数学中的概念,一棵树当中没有子结点(即度为0)的结点称为叶子结点,简称“叶子”。 叶子是指出度为0的结点,又称为终端结点。

例:一棵树度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1,则这棵树的叶子节点个数为多少?

解:因为任一棵树中,结点总数=度数*该度数对应的结点数+1,所以:

总结点数=1*4+2*2+3*1+4*1+1=16

叶子结点数=16-4-2-1-1(总节点数-度不为0的个数)=8

则:n0=8

其中:n0表示叶子结点。

using

namespace

std

typedef

struct

TNode//二叉树结构

{

char

nodeValue//结点的值

TNode*

left//左子树

TNode*

right//右子树

}*BiTree

void

CreateBiTree(BiTree

&T)//中序遍历方式创建二叉树

,输入#代表该结点为空

{

char

nodeValue

cin>>

nodeValue

if(nodeValue!='#')//结点非空

{

T=new

TNode

T->nodeValue=nodeValue

CreateBiTree(T->left)

CreateBiTree(T->right)

}

else

T=NULL

}

int

CountLeaf(BiTree

T)

{

static

int

LeafNum=0//叶子初始数目为0,使用静态变量

if(T)//树非空

{

if(T->left==NULL&&T->right==NULL)//为叶子结点

LeafNum++//叶子数目加1

else//不为叶子结点

{

CountLeaf(T->left)//递归统计左子树叶子数目

CountLeaf(T->right)//递归统计右子树叶子数目

}

}

return

LeafNum

}

//用来测试的main函数,

int

main()

{

BiTree

T

int

leafNum

cout<<"请输入中序遍历的二叉树序列(#号代表该结点为空):如(ABC##DE#G##F###)"<<endl

CreateBiTree(T)

leafNum=CountLeaf(T)

cout<<"该二叉树中叶子结点数为:"<<leafNum<<endl

return

0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12064086.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存