二叉树的先序,中序,后序遍历 c语言
2015-08-10 13:29
399 查看
#include<Stdio.h> #include<malloc.h> #define Data_Type char typedef struct Node{ Data_Type data; Node * lchird; Node * rchird; }NODE, *PNODE; PNODE create(); void preOrderTraverse(PNODE); void inOrderTraverse(PNODE); void postOrderTraverse(PNODE); int main(void){ PNODE pRoot = create(); postOrderTraverse(pRoot); return 0; } PNODE create(){ PNODE a = (PNODE)malloc(sizeof(PNODE)); PNODE b = (PNODE)malloc(sizeof(PNODE)); PNODE c = (PNODE)malloc(sizeof(PNODE)); PNODE d = (PNODE)malloc(sizeof(PNODE)); PNODE e = (PNODE)malloc(sizeof(PNODE)); PNODE f = (PNODE)malloc(sizeof(PNODE)); PNODE g = (PNODE)malloc(sizeof(PNODE)); a->data = 'a'; a->lchird = b; a->rchird = c; b->data = 'b'; b->lchird = d; b->rchird = e; c->data = 'c'; c->lchird = f; c->rchird = NULL; d->data = 'd'; d->lchird = NULL; d->rchird = NULL; e->data = 'e'; e->lchird = NULL; e->rchird = NULL; f->data = 'f'; f->lchird = NULL; f->rchird = g; g->data = 'g'; g->lchird = NULL; g->rchird = NULL; return a; } void preOrderTraverse(PNODE p){ PNODE pRoot = p; printf("%c\n",pRoot->data); if(NULL!=pRoot->lchird){ preOrderTraverse(pRoot->lchird); } if(NULL!=pRoot->rchird){ preOrderTraverse(pRoot->rchird); } } void inOrderTraverse(PNODE ps){ PNODE pRoot = p; if(NULL!=pRoot->lchird){ inOrderTraverse(pRoot->lchird); } printf("%c\n",pRoot->data); if(NULL!=pRoot->rchird){ inOrderTraverse(pRoot->rchird); } } void postOrderTraverse(PNODE p){ PNODE pRoot = p; if(NULL!=pRoot->lchird){ postOrderTraverse(pRoot->lchird); } if(NULL!=pRoot->rchird){ postOrderTraverse(pRoot->rchird); } printf("%c\n",pRoot->data); }
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- 文件遍历排序函数
- Lua 学习笔记之C API 遍历 Table实现代码
- Lua和C语言的交互详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- C#中遍历Hashtable的4种方法
- Erlang中遍历取出某个位置的最大值代码
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- 数据结构之Treap详解
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法