第10周项目2 二叉树遍历的递归算法
来源:互联网 发布:固态硬盘优化软件 编辑:程序博客网 时间:2024/06/04 01:15
问题及代码:
文件:main.cpp btree.cpp btree.h
作者:郑孚嘉
问题描述:实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。
请利用二叉树算法库。
代码:
main.cpp
#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;}
btree.h btree.cpp请参考二叉树算法库
运行结果:
知识点总结:
无论是先序中序后序遍历,都运用递归算法,都是分为访问(输出)根节点,递归左子树,递归右子树三步。 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 - 二叉树遍历的递归算法】
- HDU 2686 Matrix HDU 3376 Matrix Again 费用流
- 第十二周项目2-操作用临界表存储的图
- JPA入门
- 第13周 项目2-Kruskal算法的验证
- 第十三周 项目一(3)Dijkstra算法的验证(使用图2作为测试用例)
- 第10周项目2 二叉树遍历的递归算法
- 第七周项目3-负数把正数赶出队列
- 第十周实践项目1 - 二叉树算法库
- CSS入门(5)-CSS+DIV
- 第十三周上机实践—项目1(3)—Dijkstra算法的验证,从一个顶点到其余各顶点的最短路径
- 第十三周项目2-kruskal算法的验证
- JDBC连接MySQL
- Android创建自定义控件
- 第13周 项目3-Dijkstra算法的验证