能帮我用c++写计算用顺序结构存储的二叉树的叶子结点数的代码吗
时间: 2023-06-08 10:05:44 浏览: 89
当然可以,以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct BinaryTree {
int data;
struct BinaryTree *left;
struct BinaryTree *right;
} BinaryTree;
// 创建一棵二叉树
BinaryTree *createBinaryTree() {
int data;
scanf("%d", &data);
if (data == -1) { // 输入-1表示当前节点为空
return NULL;
}
BinaryTree *node = (BinaryTree *)malloc(sizeof(BinaryTree));
node->data = data;
node->left = createBinaryTree();
node->right = createBinaryTree();
return node;
}
// 计算二叉树的叶子节点个数
int getLeafNodeCount(BinaryTree *root) {
if (root == NULL) {
return 0;
}
if (root->left == NULL && root->right == NULL) {
return 1;
}
return getLeafNodeCount(root->left) + getLeafNodeCount(root->right);
}
int main() {
printf("请按先序遍历输入二叉树(-1表示空节点):\n");
BinaryTree *root = createBinaryTree();
int count = getLeafNodeCount(root);
printf("叶子节点个数为:%d\n", count);
return 0;
}
```
这是一个二叉树的基本操作,建议多加练习。
阅读全文