二叉树遍历的递归算法
递归问题总会成为我们的难点,代码量少,思维量确是很大,难是在所难免的,所以,在思维理解的同时结合实现代码理解,这样就很有可能让我们打开思路,理解的更深,本次实践将在二叉树算法的基础上进行遍历二叉树递归运算实现,旨在结合实现代码,能够更好的理解,同时可以实际应用。(编译环境:VC++6.0)
本次运用到的二叉树算法库点击此处参考。
注:在main函数中,创建的用于测试的二叉树如下—— 

实现源代码如下:
//*Copyright  (c)2017,烟台大学计算机与控制工程学院*
//*All rights reservrd.*
//*文件名称 :main.cpp*
//*作者:田长航*
//*完成时间:2017年10月26日*
//*版本号:v1.0*
//*问题描述:测试函数*
//*输入描述:无*
//*程序输出:无*
#include <stdio.h>
#include "btree.h"
void PreOrder(BTNode *b)        //先序遍历的递归算法
{if (b!=NULL){printf("%c ",b->data);  //访问根节点PreOrder(b->lchild);    //递归访问左子树PreOrder(b->rchild);    //递归访问右子树}
}void InOrder(BTNode *b)         //中序遍历的递归算法
{if (b!=NULL){InOrder(b->lchild);     //递归访问左子树printf("%c ",b->data);  //访问根节点InOrder(b->rchild);     //递归访问右子树}
}void PostOrder(BTNode *b)       //后序遍历的递归算法
{if (b!=NULL){PostOrder(b->lchild);   //递归访问左子树PostOrder(b->rchild);   //递归访问右子树printf("%c ",b->data);  //访问根节点}
}int main()
{BTNode *b;CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");printf("二叉树b:");DispBTNode(b);printf("\n");printf("先序遍历序列:\n");PreOrder(b);printf("\n");printf("中序遍历序列:\n");InOrder(b);printf("\n");printf("后序遍历序列:\n");PostOrder(b);printf("\n");DestroyBTNode(b);return 0;
}
测试结果截图如下:


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

  1. 数据结构上机实践第九周项目1 - 二叉树算法库

    二叉树算法库 学了新的内容就应该有新的应用,本次实践将进行二叉树算法库的建立,来适应更多工程的需求,丰富算法库. 注:在main函数中,创建的用于测试的二叉树如下 首先本次建立算法库实践将会运用到多文 ...

  2. 数据结构上机实践第九周项目3 - 利用二叉树遍历思想解决问题

    利用二叉树遍历思想解决问题 学以致用,知行合一,学了知识就要会运用,否则跟背课文没什么区别,上次实践,做了二叉树递归遍历的算法实现,本次实践,将利用遍历思想解决问题,将遍历思想真正的运用到实际问题需求 ...

  3. 数据结构上机实践第二周项目2- 程序的多文件组织

    [项目2 - 程序的多文件组织] 学习数据结构,目标就是要编制出有相当规模的程序的.将所有的代码放在一个文件中的做法,不能适用现阶段的需求了. 通过这个项目,确认有能力用多文件组织程序.方便以后各章, ...

  4. 数据结构上机实践第二周项目3——体验复杂度

    [项目3 - 体验复杂度] 在数据结构与算法中,对于算法的选择,要考虑到时间复杂度的重要性,在小规模的计算中,或许不同时间复杂度的程序所用时间并无多少影响,但在实际应用中,大数据时代,我们会明白复杂度 ...

  5. 数据结构上机实践第二周项目1

    [项目1 - C/C++语言中函数参数传递的三种方式] C语言提供了两种函数参数传递的方式:传值和传地址.在C++中,又拓展了引用方式.通过本项目,确认自己已经掌握了这三种方式的原理,为后续学习做好准 ...

  6. 数据结构上机实践第四周项目6- 循环双链表应用

    数据结构实践--循环双链表应用 线性表都是单向的?链表都是单向的? 本次实践将利用循环双链表进行实际应用,感受这种数据结构的好处 要求如下: 设非空线性表ha和hb都用带头节点的循环双链表表示.设计一 ...

  7. 数据结构上机实践第四周项目5 - 猴子选大王

    数据结构实践--猴子选大王 首先呢,小普及一下 读者:难道你当我不知道 读者想对小编说: 进入正题,项目要求如下: 一群猴子,编号是1,2,3 -m,这群猴子(m个)按照1-m的顺序围坐一圈.从第1只 ...

  8. 数据结构上机实践第四周项目4 - 建设双链表算法库

    数据结构之自建算法库--双链表 各种算法结构都有各自的用途,在实际中我们会碰到各种工程,单链表有时无法或者不能很好的满足我们的需求,这个时候,双链表不失为一种好的数据结构.本次实践将建立双链表算法库, ...

  9. 数据结构上机实践第四周项目7 - 多项式求和

    项目6 - 多项式求和 用单链表存储一元多项式,并实现两个多项式的加法. 提示:  1.存储多项式的数据结构  多项式的通式是pn(x)=anxn+an−1xn−1+...+a1x+a0.n次多项式共 ...

最新文章

  1. bootsrap学习
  2. 到底什么是几何深度学习?Twitter 首席科学家Bronstein深度解读
  3. 【BZOJ4259】残缺的字符串
  4. ZNCZZ|新手做车的常见误区
  5. P3258 [JLOI2014]松鼠的新家(树上点查分)
  6. docs和src_《编写Docs波特兰2017》中的提示和顶级演示
  7. Quick-cocos2d-x3.3 Study (五)--------- 添加按钮
  8. 轻量级锁_一句话撸完重量级锁、自旋锁、轻量级锁、偏向锁、悲观、乐观锁等各种锁 不看后悔系列...
  9. 使用 selenium 下载小视频
  10. qdir 自动创建多级目录_QDir 类 - 目录信息类
  11. 深信服防火墙console波特率_[网络技术]深信服防火墙配置详细步骤 pdf文件[16.26MB]-码姐姐下载...
  12. 乘积最大python
  13. 计算矩阵行列式时奇排列与偶排列的判定
  14. 英语学(xiao 二声)习__字母读音
  15. 关于防止表单重复提交
  16. 此iphone尚未备份显示未连接服务器,iPhone出现尚未备份的提示是怎么回事 提示取消方法...
  17. jQuery库的介绍与使用
  18. 中国软件外包 IT公司最新排名
  19. Shiro用户认证和用户授权流程
  20. UE4动画系统:什么是动画通知(Anim Notify)

热门文章

  1. bzoj 1630 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁(有重复元素的组合数)
  2. jenkins+postman+newman环境搭建自动化测试
  3. jQuery Mobile中文本输入域input、textarea的data-*选项
  4. 均匀带电的无限大平面划成无限长直线积分计算场强
  5. 微波浅谈(一)更新中
  6. 我用VS2015 开发webapp (1) 需求、目的、配置
  7. ubuntu18.04 本地源制作
  8. 大数 Buy the tickey玄学
  9. 深入剖析java迭代器以及C#迭代器!
  10. Java基础知识强化87:BigInteger类之BigInteger加减乘除法的使用