• 数据结构-二叉树的递归遍历


    1. //二叉树的链式存储
    2. /
    3. #include
    4. #include
    5. #include
    6. #define MAXSIZE 1000
    7. typedef char TDatatype;
    8. typedef struct BiTNode {
    9. TDatatype data;
    10. struct BiTNode* leftchild;
    11. struct BiTNode* rightchild;
    12. struct BiTNode* parent;
    13. }BiTNode,*BiTree;
    14. //前序遍历算法
    15. void PreOrderTraverse(BiTree T);
    16. //中序遍历算法
    17. void InOrderTraverse(BiTree T);
    18. //后续遍历算法
    19. void PostOrderTraverse(BiTree T);
    20. //利用拓展二叉树(#法)的先序排列确定一棵二叉树
    21. void CreateBiTree(BiTree* T,char* arr);
    22. //int index = 0;//用来表示这个先序序列走到哪一位了
    23. //BiTree.c
    24. void PreOrderTraverse(BiTree T)
    25. {
    26. if (T == NULL)
    27. {
    28. return;
    29. }
    30. printf("%c ", T->data);
    31. PreOrderTraverse(T->leftchild);
    32. PreOrderTraverse(T->rightchild);
    33. }
    34. void InOrderTraverse(BiTree T)
    35. {
    36. if (T == NULL)
    37. {
    38. return;
    39. }
    40. InOrderTraverse(T->leftchild);
    41. printf("%c ", T->data);
    42. InOrderTraverse(T->rightchild);
    43. }
    44. void PostOrderTraverse(BiTree T)
    45. {
    46. if (T == NULL)
    47. {
    48. return;
    49. }
    50. PostOrderTraverse(T->leftchild);
    51. PostOrderTraverse(T->rightchild);
    52. printf("%c ", T->data);
    53. }
    54. int indexs= 0;//用一个全局变量来表示遍历到那个序列的哪个位置了
    55. void CreateBiTree(BiTree* T,char* arr)
    56. {
    57. char ch = arr[indexs++];
    58. if (ch == '#')
    59. {
    60. *T = NULL;
    61. return;
    62. }
    63. else
    64. {
    65. BiTree tmp = (BiTree)malloc(sizeof(BiTNode));
    66. if (tmp == NULL)
    67. {
    68. printf("malloc fault\n");
    69. exit(-1);
    70. }
    71. *T = tmp;
    72. (*T)->data = ch;
    73. //CreateBiTree(&((tmp)->leftchild),arr);
    74. //CreateBiTree(&((tmp)->rightchild),arr);
    75. }
    76. CreateBiTree(&((*T)->leftchild),arr);
    77. CreateBiTree(&((*T)->rightchild),arr);
    78. }
    79. void test1()
    80. {
    81. BiTree testree;
    82. printf("请输入这棵二叉树的拓展二叉树(#法)的先序排列\n");
    83. char arr[2 * MAXSIZE + 2] = { 0 };
    84. scanf("%s", arr);
    85. CreateBiTree(&testree,arr);
    86. PreOrderTraverse(testree);
    87. printf("\n");
    88. // InOrderTraverse(testree);
    89. // printf("\n");
    90. // PostOrderTraverse(testree);
    91. }
    92. int main()
    93. {
    94. test1();
    95. return 0;
    96. }

  • 相关阅读:
    SpringBoot使用Nacos作为配置中心服务
    WebSocket 初体验:构建实时通信应用
    微软数据库的SQL注入漏洞解析——Microsoft Access、SQLServer与SQL注入防御
    微信小程序开发 开启
    Java 24 Design Pattern 之 策略模式
    基于PHP+MySQL毕业设计选题管理系统(含论文)
    window与linux共享文件夹,samba的配置和使用
    2022亚太B题赛题分享
    浅谈设计模式-解释器模式
    IEEE754 标准存储浮点数
  • 原文地址:https://blog.csdn.net/Colin_xuan/article/details/126300044