版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GAT 1481.2-2018北斗全球卫星导航系统公安应用 第2部分:终端定位技术要求》专题研究报告
- 养老院服务质量监督与投诉处理制度
- 企业员工培训与技能发展路径制度
- 企业内部保密协议签订制度
- 养鸡除草技术培训课件
- 2026湖南岳阳汨罗市第三人民医院面向社会招聘编外劳务派遣制专业技术人员7人参考题库附答案
- 2026湖南长沙市森林公安局招聘普通雇员1人参考题库附答案
- 2026福建省面向重庆大学选调生选拔工作备考题库附答案
- 2026西北工业大学动力与能源学院叶轮机气热弹研究所招聘1人(陕西)参考题库附答案
- 公共交通线路审批管理制度
- 汽机专业安全培训课件
- 钢结构工程全面质量通病图册
- 宫颈TCT诊断课件
- 2026高考蓝皮书高考关键能力培养与应用1.批判性与创造性思维能力的基础知识
- 多学科团队(MDT)中的医患沟通协同策略
- 期末复习知识点清单新教材统编版道德与法治七年级上册
- 账务清理合同(标准版)
- 投标委托造价协议书
- 孕妇上班免责协议书
- 神经内科脑疝术后护理手册
- 2026年包头轻工职业技术学院单招职业适应性测试题库附答案
评论
0/150
提交评论