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

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

ID:50798901

大小:85.72 KB

页数:6页

时间:2020-03-14

二叉树的遍历源代码(C语言).docx_第1页
二叉树的遍历源代码(C语言).docx_第2页
二叉树的遍历源代码(C语言).docx_第3页
二叉树的遍历源代码(C语言).docx_第4页
二叉树的遍历源代码(C语言).docx_第5页
资源描述:

《二叉树的遍历源代码(C语言).docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、二叉树就是每个结点最多有两个子树的树形存储结构,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被且只被访问一次。程序的流程图如下:程序代码如下:#include#include#include#includetypedefcharElemType;structBTreeNode{ElemTypedata;BTreeNode*left;BTreeNode*right;};voidInitBTree(BTreeNode*&BT){//初始化二叉树BT=NULL;}void

2、CreateBTree(BTreeNode*&BT,char*a){//根据广义表表示的二叉树建立对应的存储结构constintMaxSize=10;BTreeNode*s[MaxSize];inttop=-1;BT=NULL;BTreeNode*p;intk;inti=0;while(a[i]){switch(a[i]){case'':break;case'(':if(top==MaxSize-1){printf("栈的空间太小,请增加MaxSize的值");exit(1);}top++;s[top]=p;k=1;break;case')':if(top==-1){pr

3、intf("二叉树广义表字符串错!");exit(1);}top--;break;case',':k=2;break;default:p=newBTreeNode;p->data=a[i];p->left=p->right=NULL;if(BT==NULL)BT=p;else{if(k==1)s[top]->left=p;elses[top]->right=p;}}i++;}}boolEmptyBTree(BTreeNode*BT){//判断一棵二叉树是否为空,若是则返回ture,否则返回falsereturnBT==NULL;}intDepthBTree(BTreeNo

4、de*BT){if(BT==NULL)return0;else{intdep1=DepthBTree(BT->left);intdep2=DepthBTree(BT->right);if(dep1>dep2)returndep1+1;elsereturndep2+1;}}boolFindBTree(BTreeNode*BT,ElemType&x){//从二叉树中查找值为x的结点,若存在该结点则由x带回它的完整值if(BT==NULL)returnfalse;else{if(BT->data==x){x=BT->data;returntrue;}else{if(FindBTre

5、e(BT->left,x))returntrue;if(FindBTree(BT->right,x))returntrue;returnfalse;}}}voidPrintBTree(BTreeNode*BT){//按照树的一种表示方法输出一棵二叉树if(BT!=NULL){cout<data;if(BT->left!=NULL

6、

7、BT->right!=NULL){cout<<'(';PrintBTree(BT->left);if(BT->right!=NULL)cout<<',';PrintBTree(BT->right);cout<<')';}}}voidCle

8、arBTree(BTreeNode*&BT){//清除二叉树中的所有结点,使之变为一棵空树if(BT!=NULL){ClearBTree(BT->left);ClearBTree(BT->right);deleteBT;BT=NULL;}}voidPreOrder(BTreeNode*BT){if(BT!=NULL){cout<data<<'';PreOrder(BT->left);PreOrder(BT->right);}}voidInOrder(BTreeNode*BT){if(BT!=NULL){InOrder(BT->left);cout<data

9、<<'';InOrder(BT->right);}}voidPostOrder(BTreeNode*BT){if(BT!=NULL){PostOrder(BT->left);PostOrder(BT->right);cout<data<<'';}}voidLevelOrder(BTreeNode*BT){//按层遍历由BT指针所指向的二叉树constintMaxSize=30;//定义用于存储队列的数组长度BTreeNode*q[MaxSize];//定义队列所使用的数组空间intfront=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。