第九周项目二 二叉树的先序,中序,后序遍历

来源:互联网 发布:官居一品 知乎 编辑:程序博客网 时间:2024/06/15 21:17
  1. 烟台大学计算机学院  
  2.   
  3. 作者:王雪行  
  4.   
  5. 问题描述:实现二叉树的先序、中序、后序遍历的递归算法, 
  6. 并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。  
  7.   
  8. 输入描述:无 
  9.   
  10. 输出描述:输出二叉树先中后序遍历结果 
  11.   
  12. */   
  13.   
  14.   
  15. #include <stdio.h>  
  16.   
  17. #include "../btree.h"//用到了btree.h  
  18.   
  19. void PreOrder(BTNode *b)        //先序遍历的递归算法  
  20. {  
  21.     if (b!=NULL)  
  22.     {  
  23.         printf("%c ",b->data);  //访问根节点  
  24.         PreOrder(b->lchild);    //递归访问左子树  
  25.         PreOrder(b->rchild);    //递归访问右子树  
  26.     }  
  27. }  
  28.   
  29. void InOrder(BTNode *b)         //中序遍历的递归算法  
  30. {  
  31.     if (b!=NULL)  
  32.     {  
  33.         InOrder(b->lchild);     //递归访问左子树  
  34.         printf("%c ",b->data);  //访问根节点  
  35.         InOrder(b->rchild);     //递归访问右子树  
  36.     }  
  37. }  
  38.   
  39. void PostOrder(BTNode *b)       //后序遍历的递归算法  
  40. {  
  41.     if (b!=NULL)  
  42.     {  
  43.         PostOrder(b->lchild);   //递归访问左子树  
  44.         PostOrder(b->rchild);   //递归访问右子树  
  45.         printf("%c ",b->data);  //访问根节点  
  46.     }  
  47. }  
  48.   
  49. int main()  
  50. {  
  51.     BTNode *p;  
  52.     CreateBTNode(p,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");  
  53.     printf("先序:");  
  54.     PreOrder(p);  
  55.     printf("\n");  
  56.      printf("中序:");  
  57.     InOrder(p);  
  58.     printf("\n");  
  59.      printf("后序:");  
  60.     PostOrder(p);  
  61.     printf("\n");  
  62.   
  63.     DestroyBTNode(p);  
  64.   
  65.     return 0;  
  66.   
  67.   
  68.   
  69. }  

运行结果:


阅读全文
0 0