二叉树的遍历算法 递归算法
2010-10-10 22:52
246 查看
//////////////////////////////////////////// //二叉树的遍历算法 递归算法 // //Author:Wang Yong // //Date: 2010.8.19 // //////////////////////////////////////////// #include <stdio.h> #include <stdlib.h> typedef char ElemType; /////////////////////////////////////////// //定义树的结点类型 typedef struct BNode { ElemType data; struct BNode *lchild,*rchild; }; /////////////////////////////////////////// //二叉树的创建 BNode *CreatBitTree() { BNode *p; char c; scanf("%c",&c); if(c == '#') p = NULL; //截止二叉树的建立 else { p = (BNode *) malloc(sizeof(BNode)); //申请结点空间 p->data = c; p->lchild = CreatBitTree(); p->rchild = CreatBitTree(); } return p; } //////////////////////////////////////////// //二叉树的先序遍历 void PreOrderTraverse(BNode *p) { if(p != NULL) { printf("%c*",p->data); PreOrderTraverse(p->lchild); PreOrderTraverse(p->rchild); } } ///////////////////////////////////////////// //二叉树的中序遍历 void InOrderTraverse(BNode *p) { if(p != NULL) { InOrderTraverse(p->lchild); printf("%c*",p->data); InOrderTraverse(p->rchild); } } ////////////////////////////////////////////// //二叉树的后序遍历 void PostOrderTraverse(BNode *p) { if(p != NULL) { PostOrderTraverse(p->lchild); PostOrderTraverse(p->rchild); printf("%c*",p->data); } } ///////////////////////////////////////////// int main() { BNode *tree; tree = CreatBitTree(); PreOrderTraverse(tree); printf("\n"); InOrderTraverse(tree); printf("\n"); PostOrderTraverse(tree); printf("\n"); return 0; }
相关文章推荐
- 二叉树的遍历算法(先序中序后序遍历的递归算法与非递归算法、层级遍历的递归与非递归算法)
- 算法1:遍历二叉树的递归算法
- 数据结构_二叉树_遍历算法应用
- 数据结构与算法学习之二叉树的遍历:已知先序、中序、后序序列三者中的两种求另外一种遍历的算法
- 第十周 项目2 二叉树的遍历递归算法
- 第十周项目2—二叉树的遍历递归算法
- 二叉树的遍历算法
- 算法题25 二叉树的后序遍历变形之二叉树中和为某一值的路径
- 妙趣横生的算法之二叉树的创建与遍历
- 第11周—项目1(1)二叉树的层次遍历算法
- 按层次顺序(同一层自左至右)遍历二叉树的算法
- 算法之二叉树各种遍历
- C++之根据组合遍历顺序生成二叉树(25)---《那些奇怪的算法》
- 二叉树先序遍历、中序遍历、后续遍历算法
- 二叉树创建及遍历算法(递归及非递归)
- 数据结构--二叉树--输出树中从根到每个叶子节点的路径(树遍历算法的应用) .
- 算法之二叉树各种遍历
- 算法:非递归遍历二叉树
- 程序员面试100题(算法)之二叉树中找出和为某一值的所有路径(含二叉树前序创建、遍历)
- 【转】算法之二叉树各种遍历