如图所示,二叉树结点为7个,如果用递归或者基于栈的方式,创建函数应该怎么去编写呢?
1条回答 默认 最新
- fuill 2022-05-04 01:02关注
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 求指导ADS低噪放设计
- ¥15 CARSIM前车变道设置
- ¥50 三种调度算法报错 有实例
- ¥15 关于#python#的问题,请各位专家解答!
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存