Chinaunix首页 | 论坛 | 博客
  • 博客访问: 360867
  • 博文数量: 79
  • 博客积分: 1270
  • 博客等级: 中尉
  • 技术积分: 1370
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-12 08:48
个人简介

freedom~~~~~~~~~~

文章分类

全部博文(79)

文章存档

2014年(10)

2013年(2)

2012年(13)

2011年(54)

分类: C/C++

2012-10-31 16:11:56


点击(此处)折叠或打开

  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include <stdio.h>

  4. typedef struct _tree tree;
  5. struct _tree
  6. {
  7.     char data;
  8.     tree *lchild,*rchild;
  9.     tree *father;
  10. };


  11. typedef struct _tree
  12. {
  13.     char data;
  14.     struct _tree *lchild,*rchild;
  15.     struct _tree *father;
  16. }tree;

  17. tree *Creat(tree *root,char p)
  18. {
  19.     if(root==NULL)
  20.     {
  21.         root=(tree *)malloc(sizeof(tree));
  22.         root->lchild=NULL;
  23.         root->rchild=NULL;
  24.         root->father=NULL;
  25.         root->data = p;
  26.     }
  27.     else
  28.     {
  29.         if(root->data>=p)
  30.         {
  31.             root->lchild=Creat(root->lchild,p);
  32.             root->father = root->lchild;
  33.         }
  34.         else
  35.         {
  36.             root->rchild=Creat(root->rchild,p);
  37.             root->father = root->rchild;
  38.         }
  39.     }
  40.     return root;
  41. }

  42. void PreOrderTraverse(tree *root)
  43. {
  44.     if(root!=NULL)
  45.     {
  46.         PreOrderTraverse(root->lchild);
  47.         printf("%c ", root->data);
  48.         PreOrderTraverse(root->rchild);
  49.     }
  50. }

  51. void InOrderTraverse(tree *root)
  52. {
  53.     if ( root != NULL )
  54.     {
  55.         printf("%c ", root->data);
  56.         InOrderTraverse(root->lchild);
  57.         InOrderTraverse(root->rchild);
  58.     }
  59. }

  60. void PostOrderTraverse(tree *root)
  61. {
  62.     if ( root != NULL )
  63.     {
  64.         PostOrderTraverse(root->lchild);
  65.         PostOrderTraverse(root->rchild);
  66.         printf("%c ", root->data);
  67.     }
  68. }

  69. int main()
  70. {
  71.     tree *root=NULL;
  72.     char p;
  73.     while( p = getchar() )
  74.     {
  75.         if ( p == ' ' || p == '\n' ) continue;
  76.         if ( p == '#' ) break;
  77.         root=Creat(root,p);
  78.     }
  79.     printf("先序: ");
  80.     InOrderTraverse(root);// 先序
  81.     printf("\n");
  82.     printf("中序: ");
  83.     PreOrderTraverse(root); // 中序
  84.     printf("\n后序: ");
  85.     PostOrderTraverse(root);// 后序
  86.     return 0;
  87. }

阅读(876) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~