




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届河北省永年县一中高一物理第二学期期末监测模拟试题含解析
- 教育技术应用与文化传承的关系研究
- 教育技术中的专利申请与风险规避
- 2025届江西省丰城二中高二物理第二学期期末预测试题含解析
- 2025届广东省广州市番禺区禺山高级中学物理高一下期末调研模拟试题含解析
- 探索教育游戏化如何影响孩子的情绪认知能力
- 教育技术项目的投资规划与风险控制
- 福建省师范大学附中2025年高一物理第二学期期末考试试题含解析
- 医疗培训中融入教育心理学的效果评估
- 技术如何塑造现代办公模式
- 《中国特色社会主义理论体系的形成和发展》(课件)
- 职业技术学院婴幼儿托育服务与管理专业人才培养方案
- 2025台州市椒江区辅警考试试卷真题
- 中学生零食消费情况调查与分析
- 国开本科《管理英语4》机考总题库及答案
- 软装行业竞品分析报告
- 公司收购公司协议书
- 基于移动端的互联网金融服务创新研究
- T∕CACM 024-2017 中医临床实践指南 穴位埋线减肥
- GB 45189-2025氰化物安全生产管理规范
- 新科粤版九年级上册初中化学全册课前预习单
评论
0/150
提交评论