第十周项目2 二叉树遍历的递归算法
来源:互联网 发布:linux安装包损坏 编辑:程序博客网 时间:2024/06/15 18:46
问题描述及代码:
#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- 二叉树遍历的递归算法
- Java调用Tuxedo服务
- U3D游戏开发之摄像机属性及妙用详解
- 第八周 项目二 建立链串的算法库
- 第10周项目2-二叉树遍历的递归算法
- 未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序
- 第十周项目2 二叉树遍历的递归算法
- 第九周项目2 对称矩阵加法和乘法
- 第十周项目二 二叉树遍历的递归算法
- 3347 数据结构实验之数组三:快速转置
- 在linux环境下退出python命令模式
- 一个xml元素引用实例
- 第九周 项目3 :稀疏矩阵的三元组表示的实现及应用(1)
- Elasticsearch5.0 版本安装错误
- 【第十周项目1 - 二叉树算法库】