用C语言的递归算法求树的叶子数

用C语言的递归算法求树的叶子数,第1张

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语言的二叉树中的叶子节点数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9700592.html

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

发表评论

登录后才能评论

评论列表(0条)

保存