c语言测试数据有多组,处理到文件尾。每组测试数据在一行中输入一个字符串(不含空格且长度不超过80),表示二叉树的先序遍历序列,其中字符*表示虚结点(对应的子树为空)
时间: 2024-03-17 17:47:42 浏览: 74
如果需要处理多组测试数据,可以使用一个while循环不断读取输入,直到读取到文件尾为止。具体的实现方法可以参考以下的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct TreeNode {
char val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
TreeNode* createTree(char* input, int* pos) {
char c = input[*pos];
(*pos)++;
if (c == '*') {
return NULL;
} else {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = c;
node->left = createTree(input, pos);
node->right = createTree(input, pos);
return node;
}
}
int countDegreeOne(TreeNode* root) {
if (root == NULL) {
return 0;
}
int count = 0;
if (root->left == NULL && root->right != NULL) {
count++;
}
if (root->left != NULL && root->right == NULL) {
count++;
}
count += countDegreeOne(root->left);
count += countDegreeOne(root->right);
return count;
}
int main() {
char input[100];
while (fgets(input, 100, stdin) != NULL) {
int pos = 0;
TreeNode* root = createTree(input, &pos);
int count = countDegreeOne(root);
printf("The number of degree one nodes is: %d\n", count);
}
return 0;
}
```
其中,fgets函数用于从标准输入(即键盘)中读取一行,直到读取到文件尾为止。在while循环中,首先读取一行输入,然后根据输入的字符串构建二叉树,统计二叉树中度为1的结点数目并输出。当读取到文件尾时,fgets函数会返回NULL,此时while循环结束。
阅读全文