数据结构上机实践第九周项目2 - 二叉树遍历的递归算法


二叉树遍历的递归算法

递归问题总会成为我们的难点,代码量少,思维量确是很大,难是在所难免的,所以,在思维理解的同时结合实现代码理解,这样就很有可能让我们打开思路,理解的更深,本次实践将在二叉树算法的基础上进行遍历二叉树递归运算实现,旨在结合实现代码,能够更好的理解,同时可以实际应用。(编译环境:VC++6.0)
本次运用到的二叉树算法库点击此处参考。
注:在main函数中,创建的用于测试的二叉树如下—— 
这里写图片描述
实现源代码如下:
[cpp]  view plain  copy
  1. //*Copyright  (c)2017,烟台大学计算机与控制工程学院*                 
  2. //*All rights reservrd.*                 
  3. //*文件名称 :main.cpp*                 
  4. //*作者:侯成健*              
  5. //*完成时间:2017年11月16日*                  
  6. //*版本号:v1.0*              
  7. //*问题描述:测试函数*                 
  8. //*输入描述:无*                 
  9. //*程序输出:无*   
  10. #include <stdio.h>  
  11. #include "btree.h"  
  12. void PreOrder(BTNode *b)        //先序遍历的递归算法  
  13. {  
  14.     if (b!=NULL)  
  15.     {  
  16.         printf("%c ",b->data);  //访问根节点  
  17.         PreOrder(b->lchild);    //递归访问左子树  
  18.         PreOrder(b->rchild);    //递归访问右子树  
  19.     }  
  20. }  
  21.   
  22. void InOrder(BTNode *b)         //中序遍历的递归算法  
  23. {  
  24.     if (b!=NULL)  
  25.     {  
  26.         InOrder(b->lchild);     //递归访问左子树  
  27.         printf("%c ",b->data);  //访问根节点  
  28.         InOrder(b->rchild);     //递归访问右子树  
  29.     }  
  30. }  
  31.   
  32. void PostOrder(BTNode *b)       //后序遍历的递归算法  
  33. {  
  34.     if (b!=NULL)  
  35.     {  
  36.         PostOrder(b->lchild);   //递归访问左子树  
  37.         PostOrder(b->rchild);   //递归访问右子树  
  38.         printf("%c ",b->data);  //访问根节点  
  39.     }  
  40. }  
  41.   
  42. int main()  
  43. {  
  44.     BTNode *b;  
  45.     CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");  
  46.     printf("二叉树b:");  
  47.     DispBTNode(b);  
  48.     printf("\n");  
  49.     printf("先序遍历序列:\n");  
  50.     PreOrder(b);  
  51.     printf("\n");  
  52.     printf("中序遍历序列:\n");  
  53.     InOrder(b);  
  54.     printf("\n");  
  55.     printf("后序遍历序列:\n");  
  56.     PostOrder(b);  
  57.     printf("\n");  
  58.     DestroyBTNode(b);  
  59.     return 0;  
  60. }  


测试结果截图如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值