以二叉链表作为二叉树的存储结构,统计二叉树的叶结点个数的代码 c 加加
时间: 2024-11-15 09:11:10 浏览: 21
基于二叉链表构建二叉树.txt
在C语言中,我们可以使用递归的方式来遍历二叉树并统计叶节点的个数。对于二叉链表存储的二叉树,每个节点通常包含两个指针,一个指向左子节点,另一个指向右子节点。下面是一个简单的函数示例,它实现了`countLeaves`来计算叶节点的数量:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
typedef struct TreeNode {
int val; // 节点值
struct TreeNode *left; // 左子节点指针
struct TreeNode *right; // 右子节点指针
} TreeNode;
// 判断一个节点是否为叶子节点
int isLeaf(TreeNode* node) {
return (node->left == NULL && node->right == NULL);
}
// 统计叶节点的函数
int countLeaves(TreeNode* root) {
if (root == NULL) {
return 0;
} else if (isLeaf(root)) {
return 1; // 如果当前节点是叶节点,返回1
} else {
return countLeaves(root->left) + countLeaves(root->right); // 否则,递归地计数左右子树的叶节点
}
}
// 测试函数
int main() {
// 创建一个二叉树实例(这里仅作演示,实际应用需根据具体数据构造)
TreeNode* root = malloc(sizeof(TreeNode));
root->val = 1;
root->left = malloc(sizeof(TreeNode));
root->left->val = 2;
root->left->left = NULL;
root->left->right = NULL;
root->right = malloc(sizeof(TreeNode));
root->right->val = 3;
root->right->left = NULL;
root->right->right = NULL;
int leafCount = countLeaves(root);
printf("叶节点总数: %d\n", leafCount);
free(root);
return 0;
}
阅读全文