这段代码是用于统计给定二叉树中各个节点度的个数。它通过先序方式建立二叉树,并使用递归方法来进行节点个数的统计。
具体实现如下所示:
#include<iostream>
#include<string.h>
using namespace std;
int a, b, c; //a、b、c分别表示度为0、1、2的结点个数
typedef struct BiTNode {
char data;
struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
void CreateBiTree(BiTree& T, char S[], int& i)
{//先序建立二叉树
if (S[i] == '0')
T = NULL;
else {
T = new BiTNode;
T->data = S[i];
CreateBiTree(T->lchild, S, ++i);
CreateBiTree(T->rchild, S, ++i);
}
}
void Count(BiTree T)
{//二叉树结点个数的统计
if (T) {
if (!T->lchild && !T->rchild) // 度为0的节点
a++;
else if (T->lchild && T->rchild) // 度为2的节点
c++;
else // 度为1的节点
b++;
Count(T->lchild); // 统计左子树节点
Count(T->rchild); // 统计右子树节点
}
}
int main() {
char S[100];
while (cin >> S) {
if (strcmp(S, "0") == 0)
break;
a = b = c = 0;
int i = -1;
BiTree T;
CreateBiTree(T, S, ++i);
Count(T);
cout << a << " " << b << " " << c << endl;
}
return 0;
}
在主函数中,先读入一个字符串S表示二叉树的先序遍历结果。如果输入为”0”,则退出循环;否则,通过调用CreateBiTree函数建立二叉树,并且将Count函数应用于该二叉树进行节点度的统计。
最后输出结果a、b、c分别表示度为0、1、2的结点个数。
内容由零声教学AI助手提供,问题来源于学员提问




