ZBLOG

#include #include 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) {//先序建立二叉树 ...

这段代码是用于统计给定二叉树中各个节点度的个数。它通过先序方式建立二叉树,并使用递归方法来进行节点个数的统计。

具体实现如下所示:

#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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9248

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?