个人技术分享

根据带虚结点的先序序列建立二叉树,计算其度为2的结点个数后输出。

输入格式:

测试数据有多组,处理到文件尾。每组测试数据在一行中输入一个字符串(不含空格且长度不超过80),表示二叉树的先序遍历序列,其中字符*表示虚结点(对应的子树为空)。

输出格式:

对于每组测试,输出所建立的二叉树中度为2的结点个数。

输入样例:

HDA**C*B**GF*E***
-+a**xb**-c**d**/e**f**

输出样例:

2
5

参考代码

#include <stdio.h>
#include <string.h>

// 全局变量,用于存储度为2的结点个数
int count;

// 函数声明
void countDegreeTwo(char *preorder, int *index);

int main() {
    char preorder[81];
    while (scanf("%s", preorder) != EOF) {
        int index = 0;
        count = 0;
        countDegreeTwo(preorder, &index);
        printf("%d\n", count);
    }
    return 0;
}

// 递归函数,用于遍历先序序列并计算度为2的结点个数
void countDegreeTwo(char *preorder, int *index) {
    // 如果到达序列末尾或遇到虚结点,返回