c语言统计一棵二叉树中叶子结点个数
时间: 2023-07-19 11:26:52 浏览: 113
统计一棵二叉树中叶子结点个数可以使用递归的方法来实现。具体实现过程如下:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结点类型
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 创建二叉树结点
TreeNode *create_node(int val) {
TreeNode *node = (TreeNode *)malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 统计二叉树中叶子结点个数
int count_leaves(TreeNode *root) {
if (root == NULL) { // 如果根结点为空,直接返回0
return 0;
} else if (root->left == NULL && root->right == NULL) { // 如果是叶子结点,返回1
return 1;
} else { // 否则,递归统计左子树和右子树的叶子结点个数
return count_leaves(root->left) + count_leaves(root->right);
}
}
int main() {
// 创建二叉树
TreeNode *root = create_node(1);
root->left = create_node(2);
root->right = create_node(3);
root->left->left = create_node(4);
root->left->right = create_node(5);
root->right->left = create_node(6);
root->right->right = create_node(7);
// 统计叶子结点个数
int count = count_leaves(root);
printf("叶子结点个数:%d\n", count);
return 0;
}
```
输出结果为:
```
叶子结点个数:4
```
阅读全文