树(C语言实现,基于链式结构)
2014-07-31 16:43
543 查看
Tree.h文件
Tree.c文件
/** * 树(C语言实现,基于链式结构) * 该树为二叉树 * 指定数据类型为字符型 */ #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 typedef int Status; typedef int bool; typedef char ElemType; //定义树节点的结构 typedef struct TreeNode{ ElemType data; struct TreeNode *leftchild, *rightchild; }TreeNode; //定义树的结构 typedef struct TreeNode* Tree; /* * 初始化树 */ Tree InitTree(Tree t); /* * 创建树按照给定的规则 */ void CreateTree(Tree* t, char* s); /* * 销毁树 */ void DestroyTree(Tree t); /* * 清空树 */ void ClearTree(Tree t); /* * 判断树是否为空 */ bool TreeEmpty(Tree t); /* * */ int TreeDepth(); /* * */ void Root(); /* * */ void Value(); /* * */ void Assign(); /* * */ void Parent(); /* * */ void LeftChild(); /* * */ void RightChild(); /* * */ void InsertChild(); /* * */ void DeleteChild(); /* * 前序遍历树 */ void PreOrderTraverse(Tree t); /* * 中序遍历树 */ void InOrderTraverse(Tree t); /* * 后序遍历树 */ void PostOrderTraverse(Tree t); /* * 层次遍历树 */ void LevelOrderTraverse(Tree t);
Tree.c文件
#include <stdio.h> #include <stdlib.h> #include "Tree.h" int i = 0; int tree_depth_num; Tree InitTree(Tree t) { return t = NULL; } void CreateTree(Tree* t, char* s) //该处的Tree*是TreeNode指针的指针,用于操作指针变量的值 { //使用前序遍历方式创建树 char ch = s[i]; i++; if(ch == '#') *t = NULL; else{ *t = (TreeNode*)malloc(sizeof(TreeNode)); (*t)->data = ch; CreateTree(&(*t)->leftchild, s); CreateTree(&(*t)->rightchild, s); } } void DestroyTree(Tree t) { if(t == NULL) return; ClearTree(t->leftchild); ClearTree(t->rightchild); free(t); } void ClearTree(Tree t) { if(t == NULL) return; t->data = ' '; ClearTree(t->leftchild); ClearTree(t->rightchild); } bool TreeEmpty(Tree t) { if(t == NULL) return TRUE; else return FALSE; } void ProOrderTraverse(Tree t) { if(t == NULL) return; printf("%c\n", t->data); ProOrderTraverse(t->leftchild); ProOrderTraverse(t->rightchild); } void InOrderTraverse(Tree t) { if(t == NULL) return; InOrderTraverse(t->leftchild); printf("%c\n",t->data); InOrderTraverse(t->rightchild); } void PostOrderTraverse(Tree t) { if(t == NULL) return; PostOrderTraverse(t->leftchild); PostOrderTraverse(t->rightchild); printf("%c\n",t->data); } void LevelOrderTraverse(Tree t) { //要用到队列 } int main() { Tree t = InitTree(t); CreateTree(&t,"AB#D##C##");//AB#D##C## //ABDG##H###CE#I##F## ProOrderTraverse(t); ClearTree(t); ProOrderTraverse(t); }
相关文章推荐
- 队列(C语言实现,基于链式结构)
- 栈(C语言实现,基于链式结构)
- 基于关系数据库系统链式存储的树型结构数据,求某结点下的子树所有结点算法(t-sql语言实现)
- C语言 队列 链式结构 实现
- C语言 双向循环链表的实现和结构 链表 线性表的链式实现
- [数据结构]图基于邻接矩阵的BFS与DFS的C语言简单实现
- C语言 线性表 链式表结构 实现
- 队列的链式结构C语言实现
- 基于链式结构的栈实现
- 数据结构之---C语言实现链式队列
- C语言 栈 链式结构 实现
- 顺序表的链式结构中用C语言实现单链表的交并差运算
- 数据结构——二叉树的链式实现(C语言)
- 数据结构中链式栈的c语言实现
- (C语言)单链表的链式实现(数据结构二)
- (原创)基于关系数据库系统链式存储的树型结构数据,求某结点下的子树所有结点算法(t-sql语言实现)
- 线性表——链式结构(c语言实现)
- 栈的线性储存结构与链式储存结构的实现(C语言)。
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- C语言线性表(基于链式结构)