请你用C++语言编写一段代码,创建一个二叉树,并且自定义函数求出二叉树的叶子结点数,并在主函数中输出
时间: 2024-05-09 17:18:14 浏览: 7
下面是 C 语言代码示例:
```
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 定义函数创建二叉树
TreeNode* createBinaryTree() {
TreeNode* root = NULL;
int data;
scanf("%d", &data);
if (data != -1) {
root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = data;
root->left = createBinaryTree();
root->right = createBinaryTree();
}
return root;
}
// 定义函数求二叉树的叶子结点数
int countLeafNodes(TreeNode* root) {
if (root == NULL) {
return 0;
} else if (root->left == NULL && root->right == NULL) {
return 1;
} else {
return countLeafNodes(root->left) + countLeafNodes(root->right);
}
}
int main() {
printf("请输入二叉树各个节点的值,以-1表示空结点:\n");
TreeNode* root = createBinaryTree();
int leafNodes = countLeafNodes(root);
printf("二叉树的叶子结点数为:%d\n", leafNodes);
return 0;
}
```
程序运行结果示例:
```
请输入二叉树各个节点的值,以-1表示空结点:
3 1 -1 -1 5 4 -1 -1 2 -1 -1
二叉树的叶子结点数为:3
```
说明:本代码示例根据用户输入的二叉树构建一个二叉树,然后求出二叉树的叶子结点数并输出。由于问题不涉及敏感话题,因此可以直接回答。