二叉树的遍历源代码(C语言)(共6页).docx

上传人:飞****2 文档编号:13482088 上传时间:2022-04-29 格式:DOCX 页数:6 大小:71.50KB
返回 下载 相关 举报
二叉树的遍历源代码(C语言)(共6页).docx_第1页
第1页 / 共6页
二叉树的遍历源代码(C语言)(共6页).docx_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《二叉树的遍历源代码(C语言)(共6页).docx》由会员分享,可在线阅读,更多相关《二叉树的遍历源代码(C语言)(共6页).docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上二叉树就是每个结点最多有两个子树的树形存储结构,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被且只被访问一次。程序的流程图如下:程序代码如下:#include#include#include#includetypedef char ElemType;struct BTreeNodeElemType data; BTreeNode*left;BTreeNode*right;void InitBTree(BTreeNode*& BT) /初始化二叉树BT=NULL;void CreateBTree(BTreeNode*& BT,char*a)

2、 /根据广义表表示的二叉树建立对应的存储结构const int MaxSize=10;BTreeNode*sMaxSize;int top=-1;BT=NULL;BTreeNode*p;int k;int i=0;while(ai)switch(ai)case :break;case (:if(top=MaxSize-1)printf(栈的空间太小,请增加MaxSize的值n);exit(1);top+;stop=p;k=1;break;case ):if(top=-1)printf(二叉树广义表字符串错!n);exit(1);top-;break;case ,:k=2;break;defau

3、lt:p=new BTreeNode;p-data=ai;p-left=p-right=NULL;if(BT=NULL)BT=p;elseif(k=1)stop-left=p;elsestop-right=p;i+;bool EmptyBTree(BTreeNode*BT) /判断一棵二叉树是否为空,若是则返回ture,否则返回falsereturn BT=NULL;int DepthBTree(BTreeNode*BT)if(BT=NULL)return 0;elseint dep1=DepthBTree(BT-left);int dep2=DepthBTree(BT-right);if(d

4、ep1dep2)return dep1+1;elsereturn dep2+1;bool FindBTree(BTreeNode*BT,ElemType&x) /从二叉树中查找值为x的结点,若存在该结点则由x带回它的完整值if(BT=NULL)return false;elseif(BT-data=x)x=BT-data;return true;elseif(FindBTree(BT-left,x)return true; if(FindBTree(BT-right,x) return true; return false;void PrintBTree(BTreeNode*BT) /按照树的

5、一种表示方法输出一棵二叉树if(BT!=NULL)coutdata;if(BT-left!=NULL|BT-right!=NULL)coutleft);if(BT-right!=NULL)coutright);coutleft);ClearBTree(BT-right);delete BT;BT=NULL;void PreOrder(BTreeNode*BT)if(BT!=NULL)coutdataleft);PreOrder(BT-right);void InOrder(BTreeNode*BT)if(BT!=NULL)InOrder(BT-left);coutdataright);void

6、 PostOrder(BTreeNode*BT)if(BT!=NULL)PostOrder(BT-left);PostOrder(BT-right);coutdata ;void LevelOrder(BTreeNode*BT) /按层遍历由BT指针所指向的二叉树const int MaxSize=30; /定义用于存储队列的数组长度BTreeNode*qMaxSize; /定义队列所使用的数组空间int front=0, rear=0; /定义队首指针和队尾指针,初始为空队BTreeNode*p;if(BT!=NULL) /将树根指针进队rear=(rear+1)%MaxSize;qrear

7、=BT;while(front!=rear) /当队列非空时执行循环front=(front+1)%MaxSize; /使队首指针指向队首元素p=qfront; /删除队首元素coutdataleft!=NULL)rear=(rear+1)%MaxSize;qrear=p-left;if(p-right!=NULL)rear=(rear+1)%MaxSize;qrear=p-right; /while end/void main()system(color 75); /设置颜色以美观BTreeNode*bt;InitBTree(bt);char b999;printf(输入二叉树广义表字符串:

8、n);cin.getline(b,sizeof(b);CreateBTree(bt,b);PrintBTree(bt);coutendl;printf(递归算法遍历:n);cout前序遍历为:;PreOrder(bt);coutendl; cout中序遍历为:;InOrder(bt);coutendl;cout后序遍历为:;PostOrder(bt);coutendl;printf(非递归算法遍历:n);cout按层遍历为:;LevelOrder(bt);coutendl;ElemType x;printf(请输入待查字符:);scanf(%c,&x);if(FindBTree(bt,x)printf(查找字符%c成功,x);elseprintf(查找字符%c失败,x);printf(n);cout 树的深度为:;coutDepthBTree(bt)endl;ClearBTree(bt);程序的运行结果如右图:专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁