c语言求叶子结点总数
时间: 2025-02-14 14:12:17 浏览: 41
在C语言中,计算二叉树的叶子节点(即只有左孩子或右孩子的节点)总数,可以采用递归的方式。这里提供一种简单的算法:
```c
#include <stdio.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
int countLeaves(TreeNode* root) {
// 如果根节点为空,则返回0
if (root == NULL) {
return 0;
}
// 如果根节点没有左右子节点,说明它是一个叶子节点,计数加一
else if (root->left == NULL && root->right == NULL) {
return 1;
}
// 否则,分别递归计算左子树和右子树的叶子节点数,并相加
else {
return countLeaves(root->left) + countLeaves(root->right);
}
}
// 主函数测试
int main() {
// 创建一个示例二叉树
TreeNode* root = ...; // 根据实际的二叉树构建
int leafCount = countLeaves(root);
printf("叶子节点总数: %d\n", leafCount);
return 0;
}
```
在这个例子中,`countLeaves` 函数通过检查当前节点是否有左右子节点来确定是否为叶子节点,并对每个叶子节点计数。如果需要处理更复杂的情况,例如非二叉树或多维数据结构,算法会有所不同。
阅读全文
相关推荐


















