二叉树的建立与递归遍历C语言版
2016-06-22 19:36
288 查看
</pre><pre name="code" class="cpp">#include <stdio.h> #include <malloc.h> typedef struct BTNode { char data; struct BTNode *lchild; struct BTNode *rchild; }BTNode; void createTree(BTNode* *T) { char ch = getchar(); if(ch=='#') { *T=NULL; return; } (*T) = (BTNode*)malloc(sizeof(BTNode)); (*T)->data = ch; createTree(&(*T)->lchild); createTree(&(*T)->rchild); } void preOrder(BTNode *T)//先序遍历 { if(T==NULL) return; printf("%c\t", T->data); if(T->lchild!=NULL) preOrder(T->lchild); if(T->rchild != NULL) preOrder(T->rchild); } void inOrder(BTNode *T)//中序遍历 { if(T==NULL) return; if(T->lchild!=NULL) inOrder(T->lchild); printf("%c\t", T->data); if(T->rchild != NULL) inOrder(T->rchild); } void postOrder(BTNode *T)//后序遍历 { if(T==NULL) return; if(T->lchild!=NULL) postOrder(T->lchild); if(T->rchild != NULL) postOrder(T->rchild); printf("%c\t", T->data); } int main(int argc, char const *argv[]) { BTNode *T; createTree(&T); puts("PreOrder visit:"); preOrder(T); putchar('\n'); puts("inOrder visit:"); inOrder(T); putchar('\n'); puts("PostOrder visit:"); postOrder(T); putchar('\n'); return 0; } /*运行结果: ABD###C## PreOrder visit: A B D C inOrder visit: D B A C PostOrder visit: D B C A 请按任意键继续. . .*/
相关文章推荐
- 3dsMax Material Import UnrealEngine4
- 线性表的顺序存储结构C语言版
- 线性表的链式存储C语言版
- Geekban极客班C++STL与泛型编程 第二周
- Teechart在VC++中使用的碎碎念
- 省赛(蓝桥杯)参赛心得
- C++ 构造函数的对象初始化列表
- vector笔记
- C++ 类的构造函数使用规则
- 字符串操作(C++)
- C 语言 可变参数 的使用 方法
- 添加哈萨克斯坦语后无法启动
- C++ 类的深拷贝和浅拷贝完美解决
- C++解除文件占用
- C++之离港篇学习笔记之const
- 举例讲解C语言的fork()函数创建子进程的用法
- 为什么来传智学C/C++? 传智让你稳坐IT贵族人才!
- 数组指针和指针数组的区别
- C#调用C++的dll,PInvoke问题和回调函数抛出异常access violation
- C++ 匿名对象初始化新对象