￰937 2022-05-03 20:38 采纳率: 50%
浏览 48
已结题

如何实现创建固定结点个数的二叉树?

如图所示,二叉树结点为7个,如果用递归或者基于栈的方式,创建函数应该怎么去编写呢?

img

  • 写回答

1条回答 默认 最新

  • fuill 2022-05-04 01:02
    关注

    img

    #include<stdio.h>
    #define max 7
    #define OK 1
    typedef struct SqBiTree
    {
        char node[max+1];
    }
    SqBiTree;
    //SqBiTree T;
    int CreatBitree(SqBiTree *T)
    {
        T->node[0]=-1;
        printf("输入二叉树:");
        for(int i=1; i<=max; i++)
        {
            scanf("%c",&T->node[i]);
        }
        //put(T);
        return OK;
    }
    void put(SqBiTree T)
    {
        for(int i=1; i<=max; i++)
            printf("%c ",T.node[i]);
        printf("\n");
    }
    int Nonleafnode(SqBiTree T)
    {
        int count=0;
        for(int i=1; i<=max; i++)
        {
            if(T.node[i]!='.')
            {
                if(i*2<=max||i*2+1<=max)
                {
                    count++;
                    //printf("%c\n",T.node[i]);
                }
            }
        }
        return count;
    }
    void Nonemptynodewithoutparents(SqBiTree T)
    {
        for(int i=1; i<=max; i++)
        {
            if(T.node[i]!='.'&&(T.node[i/2]=='.'&&T.node[(i-1)/2]=='.'))
            {
                printf("出现无双亲的非空节点%c\n",T.node[i]);
            }
        }
    }
    int main()
    {
        SqBiTree T;
        int oper=1;
        while(oper!=-1)
        {
            printf("1.建立二叉树\n");
            printf("2.打印无双亲的非空节点\n");
            printf("3.打印非叶子节点数目\n");
            scanf("%d",&oper);
            getchar();
            switch (oper)
            {
            case 1:
                CreatBitree(&T);
                break;
            case 2:
                Nonemptynodewithoutparents(T);
                break;
            case 3:
                printf("非叶子节点数目:%d\n",Nonleafnode(T));
                break;
            }
        }
        // CreatBitree(&T);
        //Nonemptynodewithoutparents(T);
        //put(T);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月4日
  • 已采纳回答 5月4日
  • 赞助了问题酬金20元 5月3日
  • 创建了问题 5月3日

悬赏问题

  • ¥15 求指导ADS低噪放设计
  • ¥15 CARSIM前车变道设置
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存