版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、建立和遍历二叉树#include "stdafx.h"#include "stdio.h"#include "malloc.h"#include "string.h"#include "stdlib.h"#define Max 20 /结点的最大个数typedef struct BinTNode char data;struct BinTNode *lchild,*rchild;BinTNode,*BinTree; /自定义二叉树的结点类型/定义二叉树的指针int NodeNum,leaf; /
2、NodeNum为结点数, leaf 为叶子数/=以广义表显示二叉树 =void DisTree(BinTree T if(Tprintf("%c",T->data;if(T->lchild|(T->rchildif(T->lchildprintf("%c",'('DisTree(T->lchild;if(T->rchildprintf("%c",','DisTree(T->rchild;printf("%c",''/=基于先序
3、遍历算法创建二叉树 =/=要 求 输 入 先 序 序 列 , 其 中 加 入 虚 结 点 "#"以 示 空 指 针 的 位 置 =BinTree CreatBinTree(BinTree Tchar ch;scanf("%c",&ch;if(ch='#'T=NULL;elseif(!(T=(BinTNode *malloc(sizeof(BinTNode printf("Error!"T->data=ch;T->lchild=CreatBinTree(T->lchild;T->rchil
4、d=CreatBinTree(T->rchild;return T;/=NLR 先序遍历 = void Preorder(BinTree Tif(Tprintf("%c",T->data;Preorder(T->lchild;Preorder(T->rchild;/=LNR 中序遍历 = void Inorder(BinTree Tif(TInorder(T->lchild;printf("%c",T->data;Inorder(T->rchild;/=LRN 后序遍历 = void Postorder(BinT
5、ree Tif(TPostorder(T->lchild;Postorder(T->rchild;printf("%c",T->data;/=采 用后序遍 历求二叉 树的深度 、结点数及叶 子数的递 归算法 =int TreeDepth(BinTree Tint hl,hr,max;if(Thl=TreeDepth(T->lchild; /求左深度hr=TreeDepth(T->rchild; /求右深度max=hl>hr? hl:hr; /取左右深度的最大值NodeNum=NodeNum+1; /求结点数if(hl=0&&
6、;hr=0leaf=leaf+1; /若左右深度为 0,即为叶子。return(max+1;else return(0;/=利用 " 先进先出 " (FIFO 队列,按层次遍历二叉树 = void Levelorder(BinTree Tint front=0,rear=1;BinTNode *cqMax,*p; /定义结点的指针数组 cqcq1=T; /根入队while(front!=rearfront=(front+1%NodeNum;p=cqfront; /出队printf("%c",p->data; /出队,输出结点的值if(p->l
7、child!=NULLrear=(rear+1%NodeNum;cqrear=p->lchild; /左子树入队if(p->rchild!=NULLrear=(rear+1%NodeNum;cqrear=p->rchild; /右子树入队/=主函数 =void main(BinTree T,root;int i,depth;printf("n"printf("输入完全二叉树的先序序列 :" /输入完全二叉树的先序序列, / 用 #代表虚结点,如 ABD#CE#F# root=CreatBinTree(T; /创建二叉树,返回根结点Dis
8、Tree(root;printf("n"do /从菜单中选择遍历方式,输入序号。printf("t* 菜单 *n"printf("n"printf("t1: 先序遍历 n"printf("t2: 中序遍历 n"printf("t3: 后序遍历 n"printf("t4: 该树的深度 , 结点数 , 叶子数 n"printf("t5: 层次遍历 n" /按层次遍历之前,先选择 4,求出该树的结 点数。printf("t0: 退出
9、 n"printf("t*n"scanf("%d",&i;/输入菜单序号(0-5switch(icase 1: printf("Print Bin_tree Preorder: "Preorder(root; /先序遍历break;case 2: printf("Print Bin_Tree Inorder: "Inorder(root; /中序遍历break;case 3: printf("Print Bin_Tree Postorder: "Postorder(root; /后序遍历break;case 4: depth=TreeDepth(root; /求树的深度及叶子数 printf("树深 =%d 树总结点数 =%d",depth,NodeNum; printf("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位工勤技能-安徽-安徽无损探伤工四级(中级工)历年参考题库含答案详解
- 2026事业单位工勤技能-安徽-安徽公路养护工五级(初级工)历年参考题库含答案详解
- 2026事业单位工勤技能-宁夏-宁夏理疗技术员四级(中级工)历年参考题库含答案详解
- 2026事业单位工勤技能-宁夏-宁夏工程测量工一级(高级技师)历年参考题库含答案详解
- 2026事业单位工勤技能-宁夏-宁夏中式面点师五级(初级工)历年参考题库含答案详解
- 2026事业单位工勤技能-天津-天津水工闸门运行工五级(初级工)历年参考题库含答案详解
- 树立以人为本的服务理念以信息技术为依托更新就业工
- 博达短信的产品课件
- 汽车空调的组成和工作原理
- 水利水电工程经营
- 2026年传感器技术及应用期末试卷及答案
- 成都市公安局天府新区分局2026年面向社会公开招聘警务辅助人员(36人)笔试模拟试题及答案解析
- 北师大版《心理健康》七年级上册全套课件
- 2026教科版(五四制)七年级英语上册单词表
- 创伤性心脏骤停高级生命支持诊疗指南(2025版)+ 损伤控制复苏流程
- 2007款帕萨特领驭 用户手册完整核心内容(原厂中文版)
- 2026上半年教师资格证302中学教育知识与能力真题(试题+答案)
- 瀚高等保测评作业指导书
- 机电维修及操作安全技术措施培训
- 机电专升本考试题及答案
- 《物业设备设施管理(第2版)》-第七章
评论
0/150
提交评论