c语言返回二叉树的叶子结点个数
时间: 2024-11-12 18:39:10 浏览: 38
erchashu,最新c语言零基础入门(带课件源码),c语言项目
在C语言中,计算二叉树的叶子节点(即没有子节点的节点)个数可以采用递归的方式。以下是一个简单的算法:
```c
// 定义二叉树节点结构体
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左子节点指针
struct TreeNode* right; // 右子节点指针
} TreeNode;
int countLeaves(TreeNode* root) {
// 如果根节点为空,则叶节点数为0
if (!root) {
return 0;
}
// 如果根节点的左右子节点都为空,说明这是一个叶子节点,计数加一
else if (!root->left && !root->right) {
return 1;
}
// 否则,对左子树和右子树分别递归计算叶节点数,并相加
else {
return countLeaves(root->left) + countLeaves(root->right);
}
}
```
这个函数`countLeaves`会遍历整个二叉树,如果遇到的是叶子节点,就返回1;如果是内部节点,它将继续递归检查其左右子树。最终结果就是所有叶子节点数之和。
阅读全文