typedef struct node
{
struct node left;
struct node right;
}Node;
int Leaf(Node tree)
{
if(tree==NULL) //终止条件1,tree指向NULL时返回0
{
return 0;
}
else if(tree->left==NULL && tree->right==NULL) //终止条件2 两个节点都为空时,找到叶子了,返回 1
{
return 1;
}
else
{
return Leaf(tree->left)+Leaf(tree->right); //递归调用
}
}
//主函数不用写了吧,创建一棵树以及调用函数,自己写
/计算二叉树的叶节点数
int LeafNode(BTNode tree)
{
if(tree==NULL) //空树,叶节点为0
return 0;
else
{
if((tree->lchild==NULL) && (tree->rchild==NULL))//叶节点时,计数1
return 1;
else
return (LeafNode(tree->lchild) + LeafNode(tree->rchild)); //计算左子树和右子树的叶节点数之和
}
}
结点的度是指,该结点的子树的个数,在二叉树中,不存在度大于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
参考资料:
以上就是关于用C语言的递归算法求树的叶子数全部的内容,包括:用C语言的递归算法求树的叶子数、在BiTree项目的基础上,使用递归编写计算二叉树叶子结点个数的函数: int LeafCount(BTNode *root)、怎么计算C语言的二叉树中的叶子节点数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)