【数据结构】数据结构C语言的实现(简单二叉树)
2016-12-17 13:28
525 查看
简单二叉树
/* * 二叉树 */ #include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 #define OVERFLOW -2 #define OK 1 #define ERROR 0 typedef int Status; typedef int TElemType; typedef struct BiTNode { TElemType data; // 节点数据 struct BiTNode *lchild, *rchild; // 左子树根节点,右子树根节点 } BiTNode, *BiTree; Status CreateBiTree(BiTree *T) { TElemType e; scanf("%d", &e); if (e == 0) *T = NULL; else { *T = (BiTree)malloc(sizeof(BiTNode)); if (!T) exit(OVERFLOW); (*T)->data = e; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); } return OK; } // 访问节点 void visit(TElemType e) { printf("%d ", e); } /* * 先序遍历二叉树:指先访问根,然后访问孩子的遍历方式 */ Status PreOrderTraverse(BiTree T, void (*visit)(TElemType)) { if (T) { visit(T->data); PreOrderTraverse(T->lchild, visit); PreOrderTraverse(T->rchild, visit); } return OK; } /* * 中序遍历二叉树:指先访问左(右)孩子,然后访问根,最后访问右(左)孩子的遍历方式 */ Status InOrderTraverse(BiTree T, void (*visit)(TElemType)) { if (T) { InOrderTraverse(T->lchild, visit); visit(T->data); InOrderTraverse(T->rchild, visit); } return OK; } /* * 后序遍历二叉树:指先访问孩子,然后访问根的遍历方式 */ Status PostOrderTraverse(BiTree T, void (*visit)(TElemType)) { if (T) { PostOrderTraverse(T->lchild, visit); PostOrderTraverse(T->rchild, visit); visit(T->data); } return OK; } /* * 主函数测试 */ int main() { BiTree T; printf("创建树,输入0为空树:\n"); CreateBiTree(&T); printf("先序遍历:"); PreOrderTraverse(T, *visit); printf("\n中序遍历:"); InOrderTraverse(T, *visit); printf("\n后序遍历:"); PostOrderTraverse(T, *visit); printf("\n"); }
相关文章推荐
- 严蔚敏 数据结构 二叉树 代码C语言实现 用C++编译器运行
- 数据结构 --静态队列的一个简单的C语言代码实现
- 数据结构C语言实现系列——二叉树[转]
- 数据结构 二叉树的先序 中序 后序遍历(linux 下c语言实现)
- 算法与数据结构-二叉树的基本操作C语言实现
- 数据结构C语言之线性表简单实现
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- 数据结构(二叉树子系统:c语言实现)
- 简单数据结构之二叉树(C++实现)
- C语言数据结构——数据结构有序二叉树的函数实现
- 数据结构C语言之栈的简单实现
- 简单的C语言二叉树的实现代码
- (C语言)二叉树实现(数据结构十三)
- 数据结构学习笔记8——简单二叉树的实现与遍历
- 3ff0 C语言实现一种简单的应用服务器内部数据结构的思路(二)
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
- 数据结构C语言实现系列——二叉树
- 【C语言】【数据结构】菜鸟学习日志(四) 用二叉树实现非递归排序
- 数据结构 c语言实现 二叉树的层次遍历(linux下实现)
- 基础简单的数据结构-C语言-二叉树链表构造