tree.c
上传用户:bjtelijie
上传日期:2010-01-01
资源大小:87k
文件大小:1k
源码类别:

数学计算

开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct tree
  4. {
  5. char info;
  6. struct tree *left;
  7. struct tree *right;
  8. };
  9. struct tree *root; /*树的第一个结点*/
  10. struct tree *construct(struct tree *root, struct tree *r, char info);
  11. void print(struct tree *r, int l);
  12. int main(void)
  13. {
  14. char s[80];
  15. root = NULL;
  16. do
  17. {
  18. printf("请输入一个字符:");
  19. gets(s);
  20. root = construct(root,root,*s);
  21. }while(*s);
  22. print(root,0);
  23. return 0;
  24. }
  25. struct tree *construct(
  26. struct tree *root, 
  27. struct tree *r, 
  28. char info)
  29. {
  30. if(!r)
  31. {
  32. r = (struct tree *)malloc(sizeof(struct tree));
  33. if(!r)
  34. {
  35. printf("内存分配失败!");
  36. exit(0);
  37. }
  38. r->left = NULL;
  39. r->right = NULL;
  40. r->info = info;
  41. if(!root)
  42. return r;
  43. if(info < root->info)
  44. root->left = r;
  45. else 
  46. root->right = r;
  47. return r;
  48. }
  49. if(info < r->info)
  50. construct(r,r->left,info);
  51. else
  52. construct(r,r->right,info);
  53. return root;
  54. }
  55. void print(struct tree *r, int l)
  56. {
  57. int i;
  58. if(!r)
  59. return;
  60. print(r->left,l+1);
  61. for(i = 0;i < l;++i)
  62. printf(" ");
  63. printf("%cn",r->info);
  64. print(r->right,l+1);
  65. }