第十周项目2二叉树遍历的递归算法
来源:互联网 发布:步进电机应用场合 知乎 编辑:程序博客网 时间:2024/06/16 09:30
问题及代码:
#ifndef BTREE_H_INCLUDED#define BTREE_H_INCLUDED/* *烟台大学计控学院 *作 者:孙启先 *完成日期:2016年11月3日*问题描述:实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 请利用二叉树算法库。*/#endif // BTREE_H_INCLUDED(1)btree.h#ifndef BTREE_H_INCLUDED#define BTREE_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data; //数据元素 struct node *lchild; //指向左孩子 struct node *rchild; //指向右孩子} BTNode;void CreateBTNode(BTNode *&b,char *str); //由str串创建二叉链BTNode *FindNode(BTNode *b,ElemType x); //返回data域为x的节点指针BTNode *LchildNode(BTNode *p); //返回*p节点的左孩子节点指针BTNode *RchildNode(BTNode *p); //返回*p节点的右孩子节点指针int BTNodeDepth(BTNode *b); //求二叉树b的深度void DispBTNode(BTNode *b); //以括号表示法输出二叉树void DestroyBTNode(BTNode *&b); //销毁二叉树void PreOrder(BTNode *b); //先序遍历的递归算法void InOrder(BTNode *b); //中序遍历的递归算法void PostOrder(BTNode *b); //后序遍历的递归算法#endif // BTREE_H_INCLUDED(2)btree.cpp#ifndef BTREE_H_INCLUDED#define BTREE_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data; //数据元素 struct node *lchild; //指向左孩子 struct node *rchild; //指向右孩子} BTNode;void CreateBTNode(BTNode *&b,char *str); //由str串创建二叉链BTNode *FindNode(BTNode *b,ElemType x); //返回data域为x的节点指针BTNode *LchildNode(BTNode *p); //返回*p节点的左孩子节点指针BTNode *RchildNode(BTNode *p); //返回*p节点的右孩子节点指针int BTNodeDepth(BTNode *b); //求二叉树b的深度void DispBTNode(BTNode *b); //以括号表示法输出二叉树void DestroyBTNode(BTNode *&b); //销毁二叉树void PreOrder(BTNode *b); //先序遍历的递归算法void InOrder(BTNode *b); //中序遍历的递归算法void PostOrder(BTNode *b); //后序遍历的递归算法#endif // BTREE_H_INCLUDED(3)main.cpp#include <stdio.h>#include"btree.h"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
- 第十周 项目2 二叉树的遍历递归算法
- 第十周-项目2 - 二叉树遍历的递归算法
- 第十周项目2-二叉树遍历的递归算法
- 第十周-项目2 - 二叉树遍历的递归算法
- 第十周 项目2-二叉树遍历的递归算法
- 第十周项目2--二叉树遍历的递归算法
- 第十周项目2【二叉树遍历的递归算法】
- 第十周 项目2 二叉树遍历的递归算法
- 第十周 项目2-二叉树遍历的递归算法
- 第十周项目2-二叉树遍历的递归算法
- 第十周项目2-二叉树遍历的递归算法
- 第十周项目2--二叉树遍历的递归算法
- 第十周项目2 - 二叉树遍历的递归算法
- 第十周 项目2--二叉树遍历的递归算法
- 第十周项目2二叉树遍历的递归算法
- 第十周 项目2-二叉树遍历的递归算法
- 第十周项目2-二叉树遍历的递归算法
- 第十周项目2- 二叉树遍历的递归算法
- U3D同时播放2个声音
- 小白学习Q/GDW 1376.1-2013
- Ubuntu远程连接MySQL(connection refused)解决方法
- 第9周项目3-稀疏矩阵的三元组表示的实现及应用(2)
- 过滤非回文数(python)
- 第十周项目2二叉树遍历的递归算法
- 绘制弧
- 修改信贷接口
- 通过函数调用分配空间
- 关于Struts2中namespace的路径问题
- STM32端口模式配置——上拉、下拉、模拟、浮空输入;推挽、开漏、复用输出
- 开发者是如何提升技能水平的
- 2016.11.02回顾
- Android最简洁的自动换行布局组件