当前位置:   article > 正文

06 数据结构之树

06 数据结构之树

引言: 数的代码实现, 先序遍历、中序、后序、层次遍历

  1. /* binary_tree.h */
  2. #ifndef _BINARY_TREE_H
  3. #define _BINARY_TREE_H
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #define DEBUG(msg) \
  8. printf("--%s--, %s\n", __func__, msg);
  9. typedef char data_t;
  10. typedef struct node {
  11. data_t data;
  12. struct node *lnext, *rnext;
  13. }bitree_t;
  14. bitree_t *binary_tree_create();
  15. void preorder(bitree_t *r);
  16. void inorder(bitree_t *r);
  17. void postorder(bitree_t *r);
  18. #endif
  1. /* binary_tree.c */
  2. #include "binary_tree.h"
  3. bitree_t *binary_tree_create()
  4. {
  5. char ch;
  6. bitree_t *root = NULL;
  7. scanf("%c", &ch);
  8. if(ch == '#')
  9. return NULL;
  10. root = (bitree_t *)malloc(sizeof(bitree_t));
  11. if(root == NULL) {
  12. DEBUG("malloc failed");
  13. return NULL;
  14. }
  15. root->data = ch;
  16. root->lnext = binary_tree_create();
  17. root->rnext = binary_tree_create();
  18. return root;
  19. }
  20. void preorder(bitree_t *r)
  21. {
  22. if(r == NULL) {
  23. return ;
  24. }
  25. printf("%c ", r->data);
  26. preorder(r->lnext);
  27. preorder(r->rnext);
  28. }
  29. void inorder(bitree_t *r)
  30. {
  31. if(r == NULL) {
  32. return ;
  33. }
  34. inorder(r->lnext);
  35. printf("%c ", r->data);
  36. inorder(r->rnext);
  37. }
  38. void postorder(bitree_t *r)
  39. {
  40. if(r == NULL) {
  41. return ;
  42. }
  43. postorder(r->lnext);
  44. postorder(r->rnext);
  45. printf("%c ", r->data);
  46. }
  1. /* test.c */
  2. #include "binary_tree.h"
  3. int main(int argc, const char *argv[])
  4. {
  5. bitree_t *r;
  6. r = binary_tree_create();
  7. preorder(r);
  8. puts("");
  9. inorder(r);
  10. puts("");
  11. postorder(r);
  12. puts("");
  13. return 0;
  14. }

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

闽ICP备14008679号