鱼C论坛

 找回密码
 立即注册
查看: 1849|回复: 3

二叉树建立不好呀!!!

[复制链接]
发表于 2022-5-8 16:06:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
哪位大佬看一下这个呀!!
微信图片_20220508160417.png
微信图片_20220508160556.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-5-8 16:32:36 From FishC Mobile | 显示全部楼层
最好发文本代码,方便别人调试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-8 17:19:12 | 显示全部楼层
wp231957 发表于 2022-5-8 16:32
最好发文本代码,方便别人调试
  1. #include<stdio.h>
  2. #include<malloc.h>

  3. typedef struct tree{
  4.         char data;
  5.         struct tree *lchild,*rchild;
  6. }bitnode;
  7. typedef bitnode *bitree;
  8. bitnode T;int m = 0;

  9. bitree creat(bitnode *T1){
  10.         char ch;m++;
  11.         printf("进来%d次\n",m);
  12.         printf("输入根:");
  13.         scanf("%c",&ch);
  14.         getchar();
  15.         if(ch == '#')T1 = NULL;
  16.         else{
  17.                 if(m != 1){
  18.                         if(!(T1=(bitnode*)malloc(sizeof(bitnode)))){
  19.                                 printf("error");
  20.                         }return;
  21.                 }
  22.                 T1->data = ch;
  23.                 printf("%c's left child:\n",T1->data);
  24.                 T1->lchild = creat(T1->lchild);
  25.                 printf("%c's right child:\n",T1->data);
  26.                 T1->rchild = creat(T1->rchild);
  27.         }
  28.         return T1;       
  29. }

  30. void previsit(bitree T1){
  31.         if(T1 != NULL){
  32.                 printf("%c",T1->data);
  33.                 previsit(T1->lchild);
  34.                 previsit(T1->rchild);
  35.         }
  36. }
  37. void cenevisit(bitree T1){
  38.         if(T1 != NULL){
  39.                 previsit(T1->lchild);
  40.                 printf("%c",T1->data);
  41.                 previsit(T1->rchild);
  42.         }
  43. }
  44. void afevisit(bitree T1){
  45.         if(T1 != NULL){
  46.                 previsit(T1->lchild);
  47.                 previsit(T1->rchild);
  48.                 printf("%c",T1->data);
  49.         }
  50. }
  51. int nodedep(bitnode *b){
  52.         int lchilddep,rchilddep;
  53.         if(b == NULL)
  54.                 return 0;
  55.         else{
  56.                 lchilddep = nodedep(b->lchild);
  57.                 rchilddep = nodedep(b->rchild);
  58.                 return(lchilddep>rchilddep)?(lchilddep+1):(rchilddep+1);
  59.         }
  60. }

  61. int nodes(bitnode *b){
  62.         int num1,num2;
  63.         if(b == NULL)
  64.                 return 0;
  65.         else if(b->lchild == NULL && b->rchild == NULL)
  66.                 return 1;
  67.         else{
  68.                 num1 = nodes(b->lchild);
  69.                 num2 = nodes(b->rchild);
  70.                 return(num1 + num2 + 1);
  71.         }
  72. }
  73. int leafnodes(bitnode *b){
  74.         int num1,num2;
  75.         if(b == NULL)
  76.                 return 0;
  77.         else if(b->lchild == NULL && b->rchild == NULL)
  78.                 return 1;
  79.         else{
  80.                 num1 = nodes(b->lchild);
  81.                 num2 = nodes(b->rchild);
  82.                 return(num1 + num2);
  83.         }
  84. }
  85. void disleaf(bitnode *b){
  86.         if(b != NULL)
  87.                 if(b->lchild == NULL && b->rchild == NULL)
  88.                         printf("%c",b->data);
  89.                 else{
  90.                         disleaf(b->lchild);
  91.                         disleaf(b->rchild);
  92.                 }
  93. }
  94. void nodedeg(bitnode *b,char c){
  95.         if(b == NULL)
  96.                 return;
  97.         else{
  98.                 if(b->lchild == NULL && b->rchild == NULL && b->data == c){
  99.                         printf("%c 的度为:%d\n",c,0);
  100.                         return;
  101.                 }
  102.                 else if(b->lchild == NULL && b->rchild != NULL ||b->lchild != NULL && b->rchild == NULL){
  103.                         printf("%c 的度为:%d\n",c,1);
  104.                         return;
  105.                 }
  106.                 else{
  107.                         if(b->data == c){
  108.                                 printf("%c 的度为:%d\n",c,2);
  109.                                 return;
  110.                         }
  111.                 }
  112.                 nodedeg(b->lchild,c);
  113.                 nodedeg(b->rchild,c);
  114.         }
  115. }

  116. void print(bitnode *b){
  117.         if(b != NULL){
  118.                 printf("%c",b->data);
  119.                 if(b->lchild != NULL || b->rchild != NULL){
  120.                         printf("(");
  121.                         print(b->lchild);
  122.                         if(b->rchild != NULL)
  123.                                 printf(",");
  124.                         print(b->rchild);
  125.                         printf(")");
  126.                                
  127.                 }
  128.         }
  129. }
  130. void main(){
  131.         printf("创建二叉树:\n");
  132.         creat(&T);
  133.         printf("完成\n");
  134.         printf("先序遍历:");
  135.         previsit(&T);
  136.         printf("完成\n");
  137.         printf("中序遍历:");
  138.         cenevisit(&T);
  139.         printf("完成\n");
  140.         printf("后序遍历:");
  141.         afevisit(&T);
  142.         printf("完成\n");
  143.         printf("深度:");
  144.         nodedep(&T);
  145.         printf("完成\n");
  146.         printf("层数:");
  147.         nodedep(&T);
  148.         printf("完成\n");
  149.         printf("节点个数:");
  150.         nodes(&T);
  151.         printf("完成\n");
  152.         printf("输出:");
  153.         print(&T);
  154.         printf("完成\n");

  155. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-8 17:19:49 | 显示全部楼层
wp231957 发表于 2022-5-8 16:32
最好发文本代码,方便别人调试

好滴
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-13 15:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表