版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、创建一颗二叉树header.h:#ifndef BCNF_Header_h#define BCNF_Header_htypedefint Item;typedefstruct nodestructnode * lchild;structnode * rchild;Item data;BiTNode,*BiTree;/*构造一棵新的二叉树*/BiTree InitBiTree(BiTNode *root);/*生成节点*/BiTNode *MakeNode(Item item,BiTNode *lchild,BiTNode *rchild);/*释放节点*/void FreeNode(BiTNo
2、de *pnode);/*清空一棵二叉树*/void ClearBiTree(BiTree tree);/*销毁一棵二叉树*/void DestroyBiTree(BiTree tree);/*判定是否为空*/int IsEmpty(BiTree tree);/*返回树的深度*/int GetDepth(BiTree tree);/*返回根*/BiTree GetRoot(BiTree tree);/*返回节点值*/Item GetItem(BiTNode *pnode);/*设置节点值*/void SetItem(BiTNode *pnode,Item item);/*设置左子树*/BiTr
3、ee SetLChild(BiTree parent,BiTree lchild);/*设置右子树*/BiTree SetRChild(BiTree parent,BiTree rchild);/*返回左子树*/ BiTree GetLChild(BiTree tree);/*返回右子树*/BiTree GetRChild(BiTree tree);/*插入新子树*/BiTree InsertChild(BiTree parent,int lr,BiTree child);/*删除子树*/void DeleteChild(BiTree parent,int lr);/*先序遍历二叉树*/voi
4、d PreOrderTraverse(BiTree tree,void(*visit)();/*中序遍历二叉树*/void InOrderTraverse(BiTree tree,void(*visit)();/*后序遍历二叉树*/void PostOrderTraverse(BiTree tree,void(*visit)();#endifmain.c:#include #include#includeHeader.hBiTree InitBiTree(BiTNode *root)BiTree tree = root;return tree;/*生成节点*/BiTNode *MakeNode
5、(Item item,BiTNode *lchild,BiTNode *rchild) BiTNode * pnode = (BiTNode *)malloc(sizeof(BiTNode); if(pnode)pnode-data = item;pnode-lchild = lchild; pnode-rchild = rchild;return pnode;/*释放节点*/void FreeNode(BiTNode *pnode) if(pnode!=NULL) free(pnode);/*清空一棵二叉树*/void ClearBiTree(BiTree tree)BiTNode * pn
6、ode = tree; if(pnode-lchild!=NULL)ClearBiTree(pnode-lchild);if(pnode-rchild!=NULL)ClearBiTree(pnode-rchild);FreeNode(pnode);/*销毁一棵二叉树*/void DestroyBiTree(BiTree tree) if(tree)ClearBiTree(tree);/*判定是否为空*/Item IsEmpty(BiTree tree) if(tree=NULL) return0;elsereturn1;/*返回树的深度*/int GetDepth(BiTree tree)in
7、t cd,ld,rd;cd = ld = rd =0;if(tree)ld = GetDepth(tree-lchild); rd = GetDepth(tree-rchild); cd = (ld rd ? ld : rd); return cd+1;else return0;/*返回根*/BiTree GetRoot(BiTree tree)return tree;/*返回节点值*/Item GetItem(BiTNode *pnode)return pnode-data;/*设置节点值*/void SetItem(BiTNode *pnode,Item item) pnode-data
8、= item;/*设置左子树*/BiTree SetLChild(BiTree parent,BiTree lchild) parent-lchild = lchild; return lchild;/*设置右子树*/BiTree SetRChild(BiTree parent,BiTree rchild) parent-rchild = rchild; return rchild;/*返回左子树*/BiTree GetLChild(BiTree tree)if(tree)return tree-lchild; returnNULL;/*返回右子树*/BiTree GetRChild(BiTr
9、ee tree)if(tree)return tree-rchild; returnNULL;/*插入新子树*/BiTree InsertChild(BiTree parent,int lr,BiTree child) if(parent)if( lr = 0& parent-lchild = NULL)parent-lchild = child;return child;if( lr = 1& parent-rchild = NULL)parent-rchild = child;return child; returnNULL;/*删除子树*/void DeleteChild(BiTree
10、parent,int lr)if(parent)if( lr = 0& parent-lchild != NULL)parent-lchild = NULL; FreeNode(parent-lchild);if( lr = 1& parent-rchild != NULL)parent-rchild = NULL; FreeNode(parent-rchild);/*先序遍历二叉树*/void PreOrderTraverse(BiTree tree,void(*visit)() BiTNode * pnode = tree;if(pnode) visit(pnode-data);PreOr
11、derTraverse(pnode-lchild,visit); PreOrderTraverse(pnode-rchild,visit);/*中序遍历二叉树*/void InOrderTraverse(BiTree tree,void(*visit)() BiTNode * pnode = tree;if(pnode)InOrderTraverse(pnode-lchild,visit); visit(pnode-data);InOrderTraverse(pnode-rchild,visit);/*后序遍历二叉树*/void PostOrderTraverse(BiTree tree,vo
12、id(*visit)() BiTNode * pnode = tree;if(pnode) PostOrderTraverse(pnode-lchild,visit); PostOrderTraverse(pnode-rchild,visit);visit(pnode-data);void print(Item item) printf(%d ,item);int main(int argc, constchar * argv) BiTNode * n1 = MakeNode(10,NULL,NULL);BiTNode * n2 = MakeNode(20,NULL,NULL);BiTNode
13、 * n3 = MakeNode(30,n1,n2);BiTNode * n4 = MakeNode(40,NULL,NULL);BiTNode * n5 = MakeNode(50,NULL,NULL);BiTNode * n6 = MakeNode(60,n4,n5);BiTNode * n7 = MakeNode(70,NULL,NULL);BiTree tree = InitBiTree(n7);SetLChild(tree,n3);SetRChild(tree,n6);printf(”树的深度为:%d,GetDepth(tree);printf(n先序遍历如下:”);PreOrderTraverse(tree,print);printf(n中序遍历如下:);In
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自行车专用马鞍包市场需求与消费特点分析
- 2024年度出国派遣务工人员住宿安排合同
- 照明设备市场需求与消费特点分析
- 灯座市场发展现状调查及供需格局分析预测报告
- 2024年度版权质押合同的质押权利与质押期限
- 计量仪器市场发展预测和趋势分析
- 2024年度服装行业网络安全保障合同
- 软梯市场需求与消费特点分析
- 2024年度成都二手房产买卖合同规范格式
- 2024年度医疗机构搬迁及信息系统迁移合同
- 温度传感器单片机实训
- 51单片机P0口工作原理详细讲解
- 企业高校项目合作协议
- 二手车交易合同书与协议书大全(共6页)
- 2022年新入团考试试卷及答案
- 浅议周记在班务工作中妙用
- 生物、地理会考背诵计划表
- U-Map:欧洲版本的高等教育分类体系
- 初中语文课外阅读句子或段落作用PPT课件
- 体育科学研究方法(第三版)第07章实验法
- 北斗系统在应急物流信息化中的应用ppt
评论
0/150
提交评论