统计二叉树中叶子结点数数据结构C语言,统计二叉树中叶子结点个数的问题
时间: 2024-12-14 18:14:13 浏览: 19
C语言递归方式统计二叉树叶子节点个数.zip
在C语言中,我们可以使用递归的方式来解决二叉树中叶子节点(即没有子节点的节点)的数量统计问题。以下是一个简单的示例:
```c
#include <stdio.h>
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
int countLeaves(TreeNode* root) {
// 如果根节点为空,则返回0
if (root == NULL) {
return 0;
}
// 如果根节点有两个空指针,说明它是个叶子节点,直接加一
else if (root->left == NULL && root->right == NULL) {
return 1;
}
// 否则,递归计算左右子树的叶子节点数量,并相加
else {
return countLeaves(root->left) + countLeaves(root->right);
}
}
// 主函数测试
int main() {
// 创建一个二叉树并初始化...
TreeNode* tree = ...;
int leafCount = countLeaves(tree);
printf("The number of leaves in the binary tree is: %d\n", leafCount);
return 0;
}
```
在这个代码片段中,`countLeaves()` 函数接收一个二叉树的根节点作为输入,通过检查每个节点是否为叶子节点(是否有左右子节点),递归地累加所有叶子节点的数量。
阅读全文