第10周项目2 二叉树遍历的递归算法
来源:互联网 发布:天融信网络管理系统 编辑:程序博客网 时间:2024/06/09 20:05
问题:
/* * Copyright (c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:wangjingqi.cpp * 作 者:王靖淇* 完成日期:2016年11月3日 * 版 本 号:v1.0 * 问题描述: 实现二叉树的先序、中序、后序遍历的递归算法, 并对用"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))"创建的二叉树进行测试。 ☆注:请利用好【二叉树算法库】* 输入描述: 无 * 程序输出: 测试数据 */
代码:
☆头文件及功能函数代码详见第10周项目1 ——二叉树算法库
☆主函数main.cpp代码
#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;}
运行结果:
知识点总结:
运用了二叉树的先序、中序、后序遍历的方法,根据三种遍历分别的遍历子树与节点的顺序采用递归的方法实现运算。
学习心得:
对于三种遍历问题,要从每种的遍历次序入手,采用递归的方法求解。
0 0
- 第10周 项目2—二叉树遍历的递归算法
- 第10周项目2——二叉树遍历的递归算法
- 第10周实践项目2-二叉树遍历的递归算法
- 第10周、项目2—二叉树遍历的递归算法
- 第10周 项目2-二叉树遍历的递归算法
- 第10周上机实践项目2—— 二叉树遍历的递归算法
- 第10周—项目2 二叉树遍历的递归算法
- 第10周项目2- 二叉树遍历的递归算法
- 第10周项目2二叉树遍历的递归算法
- 第10周 项目2- 二叉树遍历的递归算法
- 第10周项目2二叉树遍历的递归算法
- 第10周 项目2 - 二叉树遍历的递归算法
- 第10周SHH数据结构-【项目2- 二叉树遍历的递归算法 】
- 第10周 项目2—二叉树遍历的递归算法 .
- 第10周项目2 二叉树遍历的递归算法
- 第10周项目2 二叉树遍历的递归算法
- 第10周 项目2 - 二叉树遍历的递归算法
- 【第10周 项目2 - 二叉树遍历的递归算法】
- Java程序、JSP以及JavaScript中如何判断某个字符串是否包含某个子串
- ArrayList(数组列表)与ArrayList之间数据的添加与删除操作
- 解决Visual C++工程中包含 .c 或cpp文件编译时产生的.pch预编译头错误(C1853)的办法
- GitHub 配置详解
- Android中的音频视屏相关(多媒体2)
- 第10周项目2 二叉树遍历的递归算法
- angularjs学习笔记(1)
- 建造者模式的多层次理解
- python android 开发
- android studio调试的时候设置是真机还是模拟器
- TCP客户端
- 重做日志文件丢失导致无法打开数据库
- mysql 动态行转列
- Redis Windows下service操作