叶子结点

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


叶子结点 就是度为0的结点 就是没有子结点的结点


n0:度为0的结点数,n1:度为1的结点 n2:度为2的结点数。 N是总结点
在二叉树中:
n0=n2+1;

N=n0+n1+n2

例题
一棵树度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1,则这棵树的叶子节点个数为多少?
解:因为任一棵树中,结点总数=总分支数目+1,所以:
n0+4+2+1+1 = (n0*0 + 1*4 + 2*2 + 3*1 + 4*1)+1
则:n0=8

其中:n0表示叶子结点。

完全二叉树算法:

可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知:n0=n2+1,则n= n0+n1+n2(其中n为完全二叉树的结点总数),由上述公式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2。
总结起来,就是 n0=[n/2],其中[]表示上取整。可根据完全二叉树的结点总数计算出叶子结点数。


  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是二叉树输出叶子结点叶子结点个数的源代码(C++实现): ```cpp #include <iostream> using namespace std; struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; int countLeaf(TreeNode* root) { if (root == NULL) { // 如果根节点为空,则叶子结点个数为0 return 0; } else if (root->left == NULL && root->right == NULL) { // 如果当前节点为叶子结点,则叶子结点个数为1 return 1; } else { return countLeaf(root->left) + countLeaf(root->right); // 否则,叶子结点个数为左子树和右子树的叶子结点个数之和 } } void printLeaf(TreeNode* root) { if (root == NULL) { // 如果根节点为空,则直接返回 return; } if (root->left == NULL && root->right == NULL) { // 如果当前节点为叶子结点,则输出其值 cout << root->val << " "; } else { printLeaf(root->left); // 否则,递归遍历左子树 printLeaf(root->right); // 递归遍历右子树 } } int main() { // 创建一棵二叉树 TreeNode* root = new TreeNode(1); root->left = new TreeNode(2); root->right = new TreeNode(3); root->left->left = new TreeNode(4); root->left->right = new TreeNode(5); root->right->left = new TreeNode(6); root->right->right = new TreeNode(7); // 输出叶子结点个数 cout << "叶子结点个数为:" << countLeaf(root) << endl; // 输出叶子结点值 cout << "叶子结点值为:"; printLeaf(root); cout << endl; return 0; } ``` 运行结果: ``` 叶子结点个数为:4 叶子结点值为:4 5 6 7 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值