c语言:统计二叉树的叶子结点个数,并将结果输出
时间: 2024-02-25 22:52:11 浏览: 70
可以通过递归地遍历二叉树,对于每个节点判断是否为叶子节点,如果是则计数器加1,否则递归遍历左右子树,直到遍历完整棵树。
以下是一个C语言的实现示例,假设二叉树的节点结构如下:
```
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
```
代码如下:
```
int countLeaves(TreeNode* root) {
if (root == NULL) {
return 0;
}
if (root->left == NULL && root->right == NULL) {
return 1; // 叶子节点
}
int leftCount = countLeaves(root->left); // 递归遍历左子树
int rightCount = countLeaves(root->right); // 递归遍历右子树
return leftCount + rightCount; // 返回左右子树叶子节点个数的和
}
void printLeavesCount(TreeNode* root) {
printf("Leaves count: %d\n", countLeaves(root));
}
```
使用示例:
```
TreeNode* root = createTree(); // 创建一个二叉树
printLeavesCount(root); // 输出二叉树的叶子节点个数
```
其中 `createTree()` 函数需要根据具体情况实现,用于创建一棵二叉树。
阅读全文