第十周项目二-二叉树遍历的递归算法
2015-11-09 17:11
232 查看
/*
Copyright (c)2015,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:第十周项目2 - 二叉树遍历的递归算法.cpp
作 者:李丛丛
完成日期:2015年11月9日
版 本 号:v1.0
问题描述: 实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。
请利用二叉树算法库。
输入描述: 若干测试数据。
程序输出: 二叉树的输出。
*/
二叉树的算法库
实现遍历的函数:
主函数:
运行结果为;
学习心得:
1,使用算法库使编程变得简捷。
2,要真正动手才能知道哪里没掌握,比如递归,看着简单做起来难。
Copyright (c)2015,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:第十周项目2 - 二叉树遍历的递归算法.cpp
作 者:李丛丛
完成日期:2015年11月9日
版 本 号:v1.0
问题描述: 实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。
请利用二叉树算法库。
输入描述: 若干测试数据。
程序输出: 二叉树的输出。
*/
二叉树的算法库
实现遍历的函数:
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); //访问根节点 } } void PreOrder(BTNode *b) //先序遍历的递归算法 { if (b!=NULL) { printf("%c ",b->data); //访问根节点 PreOrder(b->lchild); //递归访问左子树 PreOrder(b->rchild); //递归访问右子树 } }
主函数:
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; }
运行结果为;
学习心得:
1,使用算法库使编程变得简捷。
2,要真正动手才能知道哪里没掌握,比如递归,看着简单做起来难。
相关文章推荐
- 第十一周--项目一--验证算法(3)
- 第十周项目--【二叉树遍历的递归算法】
- JavaScript_JavaScript的事件监听与捕获和冒泡
- hdu4424 Conquer a New Region
- java枚举概念
- NSHTTPCookieStorage
- 解决Android开发中,ActiveAndroid和Gson同时使用,对象序列化失败的问题
- sdp详解
- 线程thread的创建与安全终止
- 如何导入sun.misc.BASE64Encoder和sum.misc.BASE64Decoder
- JDK 1.8 API 下载 英文
- Webstorm 配置tomcat
- 《ArcGIS Runtime SDK for Android开发笔记》——数据制作篇:紧凑型切片制作(Server缓存切片)
- vs 2008 win32程序使用大内存 (>2GB)设置
- android wear 真机截图
- 第11周SHH数据结构-【 项目1 层次遍历算法 】
- 项目1.3--中序线索化二叉树的算法验证
- 第十一周上机实践—项目1(4)—哈夫曼编码的算法验证
- 第十周项目3 ——利用二叉树遍历思想解决问题
- java网络编程概念