用C语言编写实现采用孩子链表表示法作为存储结构的普通树统计叶子总数算法。
时间: 2024-12-20 15:19:15 浏览: 21
在C语言中,我们可以使用递归的方式来实现采用孩子链表表示法的普通树统计叶子节点总数的算法。这里的关键在于遍历每个节点并检查它是否为叶子节点(即没有孩子的节点)。以下是简单的步骤:
```c
#include <stdio.h>
// 定义树节点结构体
typedef struct TreeNode {
int data;
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;
// 递归地计算左子树和右子树的叶子节点数,并加起来
return countLeaves(root->left) + countLeaves(root->right);
}
int main() {
// 创建示例树节点
TreeNode* tree = // 初始化你的树结构...
// 调用函数并打印结果
int leafCount = countLeaves(tree);
printf("树中共有 %d 个叶子节点。\n", leafCount);
return 0;
}
```
阅读全文