统计二叉树的叶节点个数 c
时间: 2024-08-14 12:04:23 浏览: 43
C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法
5星 · 资源好评率100%
统计二叉树的叶节点个数,通常指的是二叉树中没有子节点的节点,也就是终端节点或者叶子节点的数量。这个任务可以使用递归的方式来进行。对于每个节点,如果它是叶节点(没有左孩子和右孩子),则增加计数;如果不是,则递归地对左右子树进行同样的操作。在C语言中,你可以编写一个函数来实现这个功能:
```c
#include <stdio.h>
#define MAX 100 // 为了演示,假设最大节点数不超过100
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
int countLeaves(struct TreeNode* node) {
if (node == NULL) { // 如果节点为空,返回0
return 0;
} else if (node->left == NULL && node->right == NULL) { // 如果节点没有子节点,它是一个叶节点
return 1;
} else { // 否则,继续递归计算左右子树的叶节点
return countLeaves(node->left) + countLeaves(node->right);
}
}
// 示例用法
int main() {
struct TreeNode* root = ...; // 初始化你的二叉树根节点
int leafCount = countLeaves(root);
printf("二叉树的叶节点个数为:%d\n", leafCount);
return 0;
}
```
阅读全文