/061.二叉树遍历

举报
C语言与CPP编程 发表于 2022/05/01 00:40:26 2022/05/01
【摘要】 #include <stdio.h> typedef struct bitnode{ char data; struct bitnode *lchild, *rchild;}bitnode, *bitree; void createbitree(t,n)bitnode ** t;int *n;{ char x; bitnod...

  
  1. #include <stdio.h>
  2. typedef struct bitnode
  3. {
  4. char data;
  5. struct bitnode *lchild, *rchild;
  6. }bitnode, *bitree;
  7. void createbitree(t,n)
  8. bitnode ** t;
  9. int *n;
  10. {
  11. char x;
  12. bitnode *q;
  13. *n=*n+1;
  14. printf(" Input %d DATA: ",*n);
  15. x=getchar();
  16. if(x!='\n') getchar();
  17. if (x=='^')
  18. return;
  19. q=(bitnode*)malloc(sizeof(bitnode));
  20. q->data=x;
  21. q->lchild=NULL;
  22. q->rchild=NULL;
  23. *t=q;
  24. printf("This Address is:%o,Data is:%c, Left Pointer is:%o,Right Pointer is: %o\n",q,q->data,q->lchild,q->rchild);
  25. createbitree(&q->lchild,n);
  26. createbitree(&q->rchild,n);
  27. return;
  28. }
  29. void visit(e)
  30. bitnode *e;
  31. {
  32. printf(" Address: %o, Data: %c, Left Pointer: %o, Right Pointer: %o\n",e,e->data,e->lchild,e->rchild);
  33. }
  34. void preordertraverse(t)
  35. bitnode *t;
  36. {
  37. if(t)
  38. {
  39. visit(t);
  40. preordertraverse(t->lchild);
  41. preordertraverse(t->rchild);
  42. return ;
  43. }else return ;
  44. }
  45. void countleaf(t,c)
  46. bitnode *t;
  47. int *c;
  48. {
  49. if(t!=NULL)
  50. {
  51. if (t->lchild==NULL && t->rchild==NULL)
  52. {
  53. *c=*c+1;
  54. }
  55. countleaf(t->lchild,c);
  56. countleaf(t->rchild,c);
  57. }
  58. return;
  59. }
  60. int treehigh(t)
  61. bitnode *t;
  62. {
  63. int lh,rh,h;
  64. if(t==NULL)
  65. h=0;
  66. else
  67. {
  68. lh=treehigh(t->lchild);
  69. rh=treehigh(t->rchild);
  70. h=(lh>rh ? lh:rh)+1;
  71. }
  72. return h;
  73. }
  74. main()
  75. {
  76. bitnode *t; int count=0;
  77. int n=0;
  78. clrscr();
  79. printf("Please initialize the TREE!\n");
  80. createbitree(&t,&n);
  81. printf("\n This is TREE Struct:\n");
  82. preordertraverse(t);
  83. countleaf(t,&count);
  84. printf(" This TREE has %d leaves.",count);
  85. printf("\n High of The TREE is: %d\n",treehigh(t));
  86. puts("\n Press any key to quit...");
  87. getch();
  88. }

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124495534

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。