编写一个c语言程序,用递归算法求二叉树叶子结点个数
时间: 2024-11-23 14:40:33 浏览: 42
在C语言中,计算二叉树的叶子节点(即无左、右孩子的节点)个数可以使用递归的方式。下面是一个简单的递归函数实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 计算二叉树叶子节点个数的递归函数
int countLeaves(TreeNode* root) {
// 如果当前节点为空,返回0
if (root == NULL)
return 0;
// 如果当前节点是叶子节点,返回1;否则,继续递归计数左、右子树的叶子节点
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`函数首先检查根节点是否存在,然后判断它是否有左右子节点。如果有且都是叶子节点,返回1;否则,递归地计算左子树和右子树的叶子节点数并相加。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)