二叉树 c 实现
来源:互联网 发布:电脑打不开软件没反应 编辑:程序博客网 时间:2024/05/21 07:26
/* binaryTreeMain.c */// #define CHAR#include "ds.h"#ifdef CHAR typedef char TElemType; TElemType Nil=' ';#endif#ifdef INT typedef int TElemType; TElemType Nil=0;#endif#include "binaryTree.h"#include "binaryTree.c"int main(){ // declare a pointer, not initialized, might be 0x0 of random BiTree T, p, c; InitBiTree(&T); CreateBiTree(&T); PreOrderTraverse(T, visit); return OK;}
/* binaryTree.c *//* Used as a parameter in traverse to print an element*/Status visit(TElemType e){#ifdef CHAR printf("%c ", e);#endif#ifdef INT printf("%d ", e);#endif return OK;}// Initial empty binary treeStatus InitBiTree(BiTree *T){ *T = NULL; return OK;}/* Create binary tree Order of creat: node, left child, right child, which are inorder if data type is char, ' ' means stop if int, 0 means stop*/Status CreateBiTree(BiTree *T){ TElemType data;#ifdef CHAR scanf("%c", &data);#endif#ifdef INT scanf("%d", &data);#endif if(data == Nil) *T = NULL; else{ *T = (BiTree)malloc(sizeof(BiTNode)); if(!*T) exit(OVERFLOW); (*T)->data = data; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); } return OK;}/* Destroy binary tree free memory allocated for tree*/void DestroyBiTree(BiTree *T){ if(*T){ if((*T)->lchild) DestroyBiTree(&(*T)->lchild); if((*T)->rchild) DestroyBiTree(&(*T)->rchild); free(*T); *T = NULL; }}// PreOrder traversevoid PreOrderTraverse(BiTree T, Status(*Visit)(TElemType e)){ if(T){ Visit(T->data); PreOrderTraverse(T->lchild, Visit); PreOrderTraverse(T->rchild, Visit); }}void InOrderTraverse(BiTree T, Status(*Visit)(TElemType e)){ if(T){ InOrderTraverse(T->lchild, Visit); Visit(T->data); InOrderTraverse(T->rchild, Visit); }}// Return deep of binary treeint BiTreeDepth(BiTree T){ int i, j; if(!T) return 0; if(T->lchild) i = BiTreeDepth(T->lchild); else i = 0; if(T->rchild) j = BiTreeDepth(T->rchild); else j = 0; return i > j?i + 1: j + 1;}
/* Binary tree: linked list representation */typedef struct BiTNode{ TElemType data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;// Initial empty binary treeStatus InitBiTree(BiTree *T);// Create binary treeStatus CreateBiTree(BiTree *T);// Return Left childTElemType LeftChild(BiTree T, TElemType e);// PreOrder traversevoid PreOrderTraverse(BiTree T, Status(*Visit)(TElemType e));// InOrder traversevoid InOrderTraverse(BiTree T, Status(*Visit)(TElemType e));// Return deep of binary treeint BiTreeDepth(BiTree T);
/* ds.h *//* Some pre define */#include <string.h>#include <ctype.h>#include <sys/malloc.h>#include <stdio.h>#include <stdlib.h>/* State code */#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW 0typedef int Status;typedef int Boolean;
阅读全文
0 0
- 二叉树 c实现
- 二叉树 C实现
- 二叉树 c 实现
- 【二叉查找树】c实现
- 用c实现二叉树
- C语言实现二叉树
- 用c实现二叉树
- 二叉树递归C实现
- C语言实现二叉树
- C语言实现二叉树
- [C++] 实现二叉搜索树
- C语言实现二叉树
- 【c++】简单实现二叉树
- 二叉树数组实现[C/C++]代码
- 二叉树系列:初探二叉树,c语言实现
- c语言二叉树和二叉搜索树的实现
- 树和二叉树 C语言实现
- 二叉树遍历及C语言实现
- POJ 1036 Gangsters
- 三级导航
- 学习日记-ajax异步转同步
- Beginning—Learn to use Markdown
- bind() to 0.0.0.0:8123 failed
- 二叉树 c 实现
- 同步锁
- A/B HDU1576
- 有用过PHP SPL的吗,不知道这主要用来干嘛
- Java 基础
- spring boot security的简单学习demo
- Hadoop 文件查看工具
- Gartner全球IAAS市场报告:阿里云进入全球前三
- 我是如何利用Hadoop做大规模日志压缩的