
计算公式: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表示叶子结点。
usingnamespace
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
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)