版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 台阶课文教学课件
- 四季之美课件77
- 收到以物抵债的设备账务处理实例-记账实操
- 国际金融教案
- 小学硬笔书法课件教学
- 智慧物流园解决方案
- 2023年农业航空作业装置项目评价分析报告
- 2024年破伤风类毒素项目评估分析报告
- 采购合同管理自查报告
- 毕业生就业协议书学前教育
- 第五单元测试卷(单元测试)2024-2025学年统编版语文四年级上册
- 《金融科技概论(第二版)》高职全套教学课件
- 沙盘游戏大纲
- 物理化学实验B智慧树知到课后章节答案2023年下北京科技大学
- 滤波器出厂试验报告
- 英语人称代词-物主代词-名词所有格(共4页)
- 幕墙工程量自动计算结果表格
- 海湾控制器CAN总线联网调试说明(共26页)
- 第四章微量元素地球化学
- [精华]^门罗第2本书中文《魂魄出体》FarJourneys
- 木霉菌生防综述
评论
0/150
提交评论