当前位置:   article > 正文

1、二叉树遍历的C语言实现_遍历二叉树c语言代码

遍历二叉树c语言代码

1、二叉树


树是n个节点的有限集
每个节点事多有两颗子树的树称为 二叉树

该实验目标实现以下二叉树:

2、二叉树的遍历方案


设:
    D -- 访问根节点,输出根节点;
    L -- 递归遍历左二叉树;
    R -- 递归遍历右二叉树;
    
二叉树遍历方案:
    DLR:先序遍历(先遍历根节点,在遍历左二叉树,再遍历右二叉树)
    LDR:中序遍历(先遍历左节点,在遍历根二叉树,再遍历右二叉树)
    LRD:后序遍历(先遍历左节点,在遍历右二叉树,再遍历根二叉树)
    

3、构造二叉树的节点


    一个成员用来保存左侧子节点的地址
    一个成员用来保存右侧子节点的地址
    一个成员用来保存数据值。
    
   (注意: 如果没有左节点或者右节点赋值为NULL)

  1. typedef struct node
  2. {
  3. struct node *lchild;
  4. int data;
  5. struct node *rchild;
  6. }NODE;

    

4、二叉树遍历的C语言实现

  1. #include<stdio.h>
  2. typedef struct node
  3. {
  4. struct node *lchild;
  5. int data;
  6. struct node *rchild;
  7. }NODE;
  8. // 先序遍历 DLR
  9. void preOrder(NODE *h)
  10. {
  11. if(h)
  12. {
  13. printf("%d ",h->data);
  14. preOrder(h->lchild);
  15. preOrder(h->rchild);
  16. }
  17. }
  18. // 中序遍历 LDR
  19. void middleOrder(NODE *h)
  20. {
  21. if(h)
  22. {
  23. middleOrder(h->lchild);
  24. printf("%d ",h->data);
  25. middleOrder(h->rchild);
  26. }
  27. }
  28. // 后序遍历 LRD
  29. void postOrder(NODE *h)
  30. {
  31. if(h)
  32. {
  33. postOrder(h->lchild);
  34. postOrder(h->rchild);
  35. printf("%d ",h->data);
  36. }
  37. }
  38. int main()
  39. {
  40. // 指向根节点的指针
  41. NODE *head;
  42. // 根节点
  43. NODE root;
  44. // 定义6个节点
  45. NODE n1;
  46. NODE n2;
  47. NODE n3;
  48. NODE n4;
  49. NODE n5;
  50. NODE n6;
  51. head = &root;
  52. // 构造二叉树
  53. root.lchild = &n1;
  54. root.data = 0;
  55. root.rchild = &n2;
  56. n1.lchild = &n3;
  57. n1.data = 1;
  58. n1.rchild = &n4;
  59. n2.lchild = NULL;
  60. n2.data = 2;
  61. n2.rchild = &n5;
  62. n3.lchild = NULL;
  63. n3.data = 3;
  64. n3.rchild = NULL;
  65. n4.lchild = NULL;
  66. n4.data = 4;
  67. n4.rchild = NULL;
  68. n5.lchild = &n6;
  69. n5.data = 5;
  70. n5.rchild = NULL;
  71. n6.lchild = NULL;
  72. n6.data = 6;
  73. n6.rchild = NULL;
  74. printf("先序遍历DLR:");
  75. preOrder(head);
  76. printf("\n");
  77. printf("中序遍历LDR:");
  78. middleOrder(head);
  79. printf("\n");
  80. printf("后序遍历LRD:");
  81. postOrder(head);
  82. printf("\n");
  83. return 0;
  84. }

演示效果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/716028
推荐阅读
相关标签
  

闽ICP备14008679号