第十周--数据结构--二叉树遍历的递归算法
2015-11-19 21:49
316 查看
/*
*第十周--数据结构--二叉树遍历的递归算法
*Copyright (c) 2015 烟台大学计算机与控制工程学院
*All right reserved.
*文件名称:tree.cpp
*writer:罗海员
*date:2015年11月18日
*版本:V1.0.1
*操作系统:windows 8
*运行环境:VC6.0
* 问题描述:
* 程序输出:
*/
*第十周--数据结构--二叉树遍历的递归算法
*Copyright (c) 2015 烟台大学计算机与控制工程学院
*All right reserved.
*文件名称:tree.cpp
*writer:罗海员
*date:2015年11月18日
*版本:V1.0.1
*操作系统:windows 8
*运行环境:VC6.0
* 问题描述:
* 程序输出:
*/
#include <stdio.h> #define MaxSize 100 typedef 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); 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; }
相关文章推荐
- 数据结构(Java)——查找和排序(3)
- 数据结构例程——平衡二叉树
- 数据结构例程——二叉排序树
- 数据结构例程——分块查找
- 数据结构与基本运算
- 数据结构例程——线性表的折半查找
- 数据结构例程——线性表的顺序查找
- 2015年大二上-数据结构-队列(3)- 负数把正数赶出队列
- 数据结构(一)
- 数据结构基础 —— 快速排序 java 实现
- 【HDU5222 2015赛码冠军杯I】【并查集找双连通 + tarjan求强连通】Exploration 双向边只能走一边是否图上存在环
- 集合框架---使用LinkedList模拟一个堆栈或者队列数据结构
- 数据结构(C++实现):栈的运用--中缀表达式转换为后缀表达式既 nyoj 257
- 数据结构 — 图的概述
- Dijkstra 算法——计算有权最短路径(边有权值)
- 树、森林及二叉树的相互转换 – 数据结构和算法50
- 十大常用数据结构
- 数据结构(Java)——查找和排序(2)
- 数据结构系列——堆
- 数据结构-题目